Jawaban lain tampak tidak lengkap.
Saya sudah mencoba sepenuhnya di bawah ini, dan itu berhasil dengan baik.
CATATAN:
1. Buat salinan repositori Anda sebelum Anda mencoba di bawah ini, agar aman.
Rincian:
1. Semua pengembangan terjadi di cabang dev
2. cabang qa hanya salinan yang sama dari dev
3. Waktu ke waktu, kode dev perlu dipindahkan / ditimpa ke cabang qa
jadi kita perlu menimpa cabang qa, dari cabang dev
Bagian 1:
Dengan perintah di bawah ini, qa lama telah diperbarui ke dev yang lebih baru:
git checkout dev
git merge -s ours qa
git checkout qa
git merge dev
git push
Komentar otomatis untuk dorongan terakhir memberi di bawah:
// Output:
// *<MYNAME> Merge branch 'qa' into dev,*
Komentar ini terlihat terbalik, karena urutan di atas juga terlihat terbalik
Bagian 2:
Di bawah ini adalah tak terduga, komitmen lokal baru di dev, yang tidak perlu
jadi, kita perlu membuang, dan membuat dev tidak tersentuh.
git checkout dev
// Output:
// Switched to branch 'dev'
// Your branch is ahead of 'origin/dev' by 15 commits.
// (use "git push" to publish your local commits)
git reset --hard origin/dev
// Now we threw away the unexpected commits
Bagian 3:
Verifikasi semuanya seperti yang diharapkan:
git status
// Output:
// *On branch dev
// Your branch is up-to-date with 'origin/dev'.
// nothing to commit, working tree clean*
Itu saja.
1. qa lama sekarang ditimpa oleh kode cabang dev baru
2. lokal bersih (asal terpencil / dev tidak tersentuh)