Tôi đang sử dụng kho lưu trữ Git trung gian để phản chiếu kho lưu trữ SVN từ xa, từ đó mọi người có thể sao chép và làm việc. Kho lưu trữ trung gian có chi nhánh chính được khởi động hàng đêm từ SVN ngược dòng và chúng tôi đang làm việc trên các nhánh tính năng. Ví dụ:
remote:
master
local:
master
feature
Tôi có thể đẩy thành công nhánh tính năng của mình trở lại điều khiển từ xa và kết thúc với những gì tôi mong đợi:
remote:
master
feature
local:
master
feature
Sau đó tôi thiết lập lại chi nhánh để theo dõi điều khiển từ xa:
remote:
master
feature
local:
master
feature -> origin/feature
Và tất cả đều tốt. Những gì tôi muốn làm từ đây là khởi động lại nhánh tính năng sang nhánh chính trên điều khiển từ xa, nhưng tôi muốn làm điều này từ máy cục bộ của mình. Tôi muốn có thể làm:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Để giữ cho tính năng từ xa chi nhánh được cập nhật với chủ từ xa. Tuy nhiên, phương pháp này khiến Git phàn nàn:
To <remote>
! [rejected] feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
git pull
thực hiện thủ thuật nhưng gây ra một cam kết hợp nhất mà tôi muốn tránh. Tôi lo ngại rằng thông điệp nói rõ feature -> feature
hơn feature -> origin/feature
nhưng đây có thể chỉ là một điều trình bày.
Tôi đang thiếu một cái gì đó, hoặc đi về điều này theo cách hoàn toàn sai? Việc tránh thực hiện rebase trên máy chủ từ xa là không quan trọng, nhưng nó giúp việc khắc phục mọi xung đột hợp nhất từ rebase trở nên khó khăn hơn nhiều.