Untuk menggabungkan file secara selektif dari satu cabang ke cabang lain, jalankan
git merge --no-ff --no-commit branchX
di mana branchX
cabang yang ingin Anda gabungkan menjadi cabang saat ini.
The --no-commit
pilihan akan menggelar file yang telah digabungkan oleh Git tanpa benar-benar melakukan mereka. Ini akan memberi Anda kesempatan untuk memodifikasi file yang digabungkan namun Anda ingin dan kemudian melakukannya sendiri.
Bergantung pada bagaimana Anda ingin menggabungkan file, ada empat kasus:
1) Anda ingin penggabungan yang benar.
Dalam hal ini, Anda menerima file yang digabungkan dengan cara Git menggabungkannya secara otomatis dan kemudian mengkomitnya.
2) Ada beberapa file yang tidak ingin Anda gabungkan.
Misalnya, Anda ingin mempertahankan versi di cabang saat ini dan mengabaikan versi di cabang yang Anda gabungkan.
Untuk memilih versi di cabang saat ini, jalankan:
git checkout HEAD file1
Ini akan mengambil versi file1
di cabang saat ini dan menimpa yang file1
diautomatisasi oleh Git.
3) Jika Anda menginginkan versi di branchX (dan bukan gabungan sebenarnya).
Lari:
git checkout branchX file1
Ini akan mengambil versi file1
in branchX
dan overwrite yang file1
digabungkan secara otomatis oleh Git.
4) Kasus terakhir adalah jika Anda hanya ingin memilih gabungan tertentu file1
.
Dalam hal ini, Anda dapat mengedit yang dimodifikasi file1
secara langsung, memperbarui ke versi apa pun yang Anda inginkan file1
, dan kemudian komit.
Jika Git tidak dapat menggabungkan file secara otomatis, itu akan melaporkan file sebagai " unmerged " dan menghasilkan salinan di mana Anda harus menyelesaikan konflik secara manual.
Untuk menjelaskan lebih lanjut dengan contoh, katakanlah Anda ingin bergabung branchX
ke cabang saat ini:
git merge --no-ff --no-commit branchX
Anda kemudian menjalankan git status
perintah untuk melihat status file yang dimodifikasi.
Sebagai contoh:
git status
# On branch master
# Changes to be committed:
#
# modified: file1
# modified: file2
# modified: file3
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: file4
#
Di mana file1
,, file2
dan file3
file-file git telah berhasil digabungkan secara otomatis.
Ini artinya bahwa perubahan pada master
dan branchX
untuk ketiga file tersebut telah digabungkan bersama tanpa konflik.
Anda dapat memeriksa bagaimana penggabungan dilakukan dengan menjalankan git diff --cached
;
git diff --cached file1
git diff --cached file2
git diff --cached file3
Jika Anda menemukan beberapa penggabungan yang tidak diinginkan maka Anda bisa
- edit file secara langsung
- menyimpan
git commit
Jika Anda tidak ingin menggabungkan file1
dan ingin mempertahankan versi di cabang saat ini
Lari
git checkout HEAD file1
Jika Anda tidak ingin bergabung file2
dan hanya ingin versi masukbranchX
Lari
git checkout branchX file2
Jika Anda ingin file3
digabungkan secara otomatis, jangan lakukan apa pun.
Git sudah menggabungkannya pada saat ini.
file4
di atas adalah penggabungan gagal oleh Git. Ini berarti ada perubahan di kedua cabang yang terjadi pada baris yang sama. Di sinilah Anda harus menyelesaikan konflik secara manual. Anda bisa membuang gabungan yang dilakukan dengan mengedit file secara langsung atau menjalankan perintah checkout untuk versi di cabang yang Anda inginkan file4
.
Akhirnya, jangan lupa git commit
.