Các câu trả lời khác nhìn không đầy đủ.
Tôi đã thử đầy đủ dưới đây, và nó hoạt động tốt.
LƯU Ý:
1. Tạo một bản sao của kho lưu trữ của bạn trước khi bạn thử bên dưới, để ở bên an toàn.
Chi tiết:
1. Tất cả sự phát triển xảy ra trong nhánh dev
2. Chi nhánh qa chỉ là cùng một bản sao của dev
3. Thỉnh thoảng, mã dev cần được di chuyển / ghi đè lên nhánh qa
vì vậy chúng ta cần ghi đè lên nhánh qa, từ nhánh dev
Phần 1:
Với các lệnh bên dưới, qa cũ đã được cập nhật lên dev mới hơn:
git checkout dev
git merge -s ours qa
git checkout qa
git merge dev
git push
Nhận xét tự động cho lần đẩy cuối cùng bên dưới:
// Output:
// *<MYNAME> Merge branch 'qa' into dev,*
Nhận xét này có vẻ ngược lại, bởi vì trình tự trên cũng có vẻ đảo ngược
Phần 2:
Dưới đây là bất ngờ, các cam kết địa phương mới trong dev, những thứ không cần thiết
vì vậy, chúng ta cần phải vứt bỏ và làm cho dev không bị ảnh hưởng.
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
Phần 3:
Xác minh mọi thứ như mong đợi:
git status
// Output:
// *On branch dev
// Your branch is up-to-date with 'origin/dev'.
// nothing to commit, working tree clean*
Đó là tất cả.
1. qa cũ hiện bị ghi đè bởi mã nhánh dev mới
2. local is clean (nguồn gốc từ xa / dev không bị ảnh hưởng)