Apakah ada cara untuk mensimulasikan git merge
antara dua cabang, cabang kerja saat ini dan master, tetapi tanpa membuat perubahan?
Saya sering mengalami konflik ketika harus membuat git merge
. Apakah ada cara untuk mensimulasikan penggabungan terlebih dahulu?
Jawaban:
Saya tidak berpikir ada cara mensimulasikan apa yang akan terjadi sampai Anda mencoba penggabungan. Namun, jika Anda memastikan bahwa output
git status
kosong sebelum Anda melakukan penggabungan, cukup aman untuk melanjutkan dan mencobanya. Jika Anda mendapatkan konflik, Anda dapat segera kembali ke keadaan sebelumnya dengan:Sejak git 1.7.4, Anda juga dapat membatalkan penggabungan dengan melakukan:
(Seperti pesan komit yang menambahkan opsi itu menjelaskan , ini ditambahkan untuk konsistensi dengan
git rebase --abort
dan sebagainya.)sumber
--no-commit
jauh lebih mudah menurut saya--no-commit
Anda masih mengubah indeks dan pohon kerja, yang sebenarnya bukan "tanpa membuat perubahan" :) Maksud saya adalah ketika orang bertanya seperti ini pertanyaan, itu umumnya karena mereka tidak menyadari bahwa cara terbaik untuk melihat bagaimana sebuah penggabungan akan pergi dengan hanya mencoba penggabungan , sering kali karena mereka tidak menyadari betapa mudahnya untuk kembali ke keadaan mereka sebelumnya jika ternyata ada masalah.git merge --abort
setara dengangit reset --merge
kapanMERGE_HEAD
hadir", jadi apa pun yang lebih mudah diingat :)Anda bisa menggunakan
git merge --no-commit
untuk mencegah penggabungan dari benar-benar dilakukan, dan jika Anda tidak suka bagaimana penggabungan bekerja, cukup reset ke kepala asli.Jika Anda benar-benar tidak ingin menyelesaikan penggabungan, bahkan jika itu adalah langkah maju (dan dengan demikian tidak memiliki konflik, menurut definisi), Anda dapat menambahkan
--no-ff
juga.sumber
git merge --abort
ada - mungkin maksud Andagit reset --merge
?rebase
ada--abort
untukgit merge
.--no-ff
juga. Agar tidak terjadi penggabungan.--no-ff
cukup wajib di sini, karena--no-commit
tidak menghentikan perubahan maju cepat.Jika saya ingin membandingkan perubahan pada cabang topik untuk dikuasai, saya merasa paling mudah dan aman untuk melakukan hal berikut:
Setelah menyelesaikan penggabungan, mudah untuk melihat perubahan gabungan dari master
Setelah selesai, cukup hapus cabang trial_merge
Dengan cara ini, cabang master tidak pernah berubah.
sumber
git checkout --detach
dan menguji apa pun yang Anda inginkan. Nanti, jika Anda ingin menyimpan perubahan Anda, lakukangit checkout -b new_branch
. Dan jika Anda ingin membuang perubahan Anda, checkout semua cabang yang Anda inginkan (git checkout master
).topic_branch
besar (seperti yang mungkin terjadi jika Anda berada di pertanyaan ini di tempat pertama)diff master
hasilnya mungkin terlalu besar bagi Anda untuk melihat jika penggabungan akan menyebabkan konflik.Saya menggunakan :
menurut dokumentasi :
Ini bukan simulasi karena akan ada penggabungan cepat jika tidak ada konflik antara dua cabang. Tetapi jika terjadi konflik, Anda akan diberi tahu dan tidak ada yang terjadi.
sumber
Saya sudah bisa menggunakan
git merge --abort
, baru-baru ini. Namun, ini hanya dapat digunakan jika ada konflik gabungan. Jika Anda yakin tidak ingin melakukan komitmen, maka gunakan metode lain yang disebutkan di atas.sumber
git merge --abort
. Anda harus membuktikan jawaban Anda di kemudian hari dengan menentukan siapa yang menulis jawaban yang Anda maksud.Mengapa tidak membuat cabang sekali pakai (git checkout -b), dan lakukan uji coba penggabungan di sana?
sumber
Saya tidak tahu persis apakah itu kasus Anda , tetapi pertanyaan Anda ingat saya bahwa kadang-kadang saya memulai fitur, saya melakukan beberapa hari dan saya menggabungkan pengembangan di atasnya berkali-kali.
Pada titik ini saya kehilangan kontrol atas file yang saya ubah dan saya hanya akan mengetahuinya ketika fitur saya ditutup dan kode saya mulai berkembang.
Dalam hal ini, cara yang baik untuk mengetahui modifikasi apa yang Anda lakukan (tidak lain dari penggabungan) menggunakan Sourcetree.
Anda harus mengklik dengan tombol kanan pada cabang dasar dan memilih
Diff Against Current
:Kemudian sourcetree akan menunjukkan kepada Anda semua modifikasi yang akan digabungkan jika Anda menggabungkan cabang Anda menjadi cabang dasar.
Tentu saja, itu tidak akan menunjukkan kepada Anda konflik, tetapi itu adalah alat yang berguna dalam penggabungan.
sumber