Hal pertama yang ingin saya jelaskan adalah bahwa nama cabang hanyalah alias untuk komit tertentu. komit adalah apa yang berhasil dilakukan git, saat Anda menarik, mendorong penggabungan, dan sebagainya. Setiap komit memiliki id unik.
Ketika Anda melakukan penggabungan $ git, yang sebenarnya terjadi adalah git mencoba memajukan cabang Anda saat ini ke komit tempat cabang yang direferensikan aktif (dengan kata lain kedua nama cabang menunjuk ke komit yang sama.) Skenario ini adalah yang termudah untuk git untuk berurusan, karena tidak ada komitmen baru. Pikirkan tentang master yang melompat ke lilipad yang sedang ditumbuhi cabang Anda. Adalah mungkin untuk mengatur flag --no-ff, di mana git akan membuat komit baru terlepas dari apakah ada konflik kode.
Dalam situasi di mana ada konflik kode antara dua cabang yang Anda coba gabungkan (biasanya dua cabang yang sejarah komitnya memiliki komit yang sama di masa lalu), fast forward tidak akan berfungsi. git mungkin masih dapat menggabungkan file secara otomatis, selama baris yang sama tidak diubah oleh kedua cabang dalam file yang saling bertentangan. dalam hal ini, git akan menggabungkan file yang bertentangan untuk Anda DAN secara otomatis mengkomitnya. Anda dapat melihat pratinjau bagaimana git melakukannya dengan melakukan $ git diff --cached. Atau Anda bisa meneruskan flag --no-commit ke perintah penggabungan, yang akan meninggalkan file yang dimodifikasi dalam indeks Anda yang harus Anda tambahkan dan komit. Tetapi Anda dapat $ git mengubah file-file ini untuk meninjau perubahan yang akan digabung.
Skenario ketiga adalah ketika ada konflik, git tidak dapat secara otomatis menyelesaikannya. Dalam hal ini Anda harus menggabungkannya secara manual. Menurut pendapat saya ini paling mudah dilakukan dengan menggabungkan mengambil, seperti araxis menggabungkan atau p4merge (gratis). Either way, Anda harus melakukan setiap file satu per satu. Jika penggabungan tersebut tampaknya macet, gunakan $ git merge --continue, untuk menyikutinya. Git harus memberi tahu Anda jika itu tidak dapat dilanjutkan, dan jika demikian mengapa tidak. Jika Anda merasa telah meningkatkan penggabungan di beberapa titik, Anda dapat melakukan $ git merge --abort, dan penggabungan apa pun akan dibatalkan dan Anda dapat memulai dari awal. Setelah selesai, setiap file yang Anda gabungkan akan menjadi file yang dimodifikasi yang perlu ditambahkan dan dikomit. Anda dapat memverifikasi di mana file-file itu dengan status $ git. Jika Anda belum melakukan file yang digabungkan. Anda perlu melakukan itu untuk menyelesaikan penggabungan.
git commit gf2n.cpp -m "Hand merge gf2n.cpp due to conflicts"
, hasilnyafatal: cannot do a partial commit during a merge.
. Dan tentu saja, "Komitmen parsial" tampaknya tidak didokumentasikan atau didiskusikan di mana pun di halaman manual git. Pertunjukangit merge
setelah perbaikan menghasilkanPlease, commit your changes before you can merge.
Apa alat keledai yang rusak ...