Pengganti untuk git merge
itu 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 pull
itu akan menimpa file yang tidak dilacak
pull = fetch + merge
, jadi kita lakukan git fetch
dengan git checkout -f, git checkout, git merge
trik 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 -f
tidak ada, tetapi git checkout -f
ada.
Kami akan menggunakan git checkout -f
+ git checkout
untuk 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-branch
kami 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