Pengganti untuk git mergeitu akan menimpa file yang tidak dilacak
Komentar di bawah ini menggunakan 'FOI' untuk 'file yang menarik', file itu
- ada di cabang donor,
- tidak ada di cabang penerima,
- dan memblokir penggabungan karena mereka ada dan tidak terlacak di direktori kerja Anda.
git checkout -f donor-branch # replace FOI with tracked `donor` versions
git checkout receiving-branch # FOI are not in `receiving`, so they disapppear
git merge donor-branch # now the merge works
Pengganti untuk git pullitu akan menimpa file yang tidak dilacak
pull = fetch + merge, jadi kita lakukan git fetchdengan git checkout -f, git checkout, git mergetrik di atas.
git fetch origin # fetch remote commits
git checkout -f origin/mybranch # replace FOI with tracked upstream versions
git checkout mybranch # FOI are not in mybranch, so they disapppear
git merge origin/mybranch # Now the merge works. fetch + merge completes the pull.
Penjelasan detail
git merge -ftidak ada, tetapi git checkout -fada.
Kami akan menggunakan git checkout -f+ git checkoutuntuk menghapus Files of Interest (lihat di atas), dan kemudian penggabungan Anda dapat berjalan secara normal.
Langkah 1. Langkah ini secara paksa menggantikan FOI yang tidak terlacak dengan versi yang dilacak dari cabang donor (juga memeriksa cabang donor, dan memperbarui sisa dir kerja).
git checkout -f donor-branch
Langkah 2. Langkah ini menghilangkan FOI karena mereka dilacak di cabang kami saat ini (donor), dan tidak ada di receiving-branchkami beralih ke.
git checkout receiving-branch
Langkah 3. Sekarang setelah FOI tidak ada, penggabungan dalam cabang donor tidak akan menimpa file yang tidak terlacak, jadi kami tidak mendapatkan kesalahan.
git merge donor-branch