Trước hết, bạn không nên sửa đổi chi nhánh địa phương master
của mình, bạn chỉ nên tạo các chi nhánh tính năng. Nếu bạn giữ địa phương của bạn master
chưa sửa đổi, sau đó bạn có thể lấy những thay đổi mới nhất từ repo ngược dòng:
git remote add upstream <url-for-upstream-repo>
git fetch upstream
Bây giờ bạn chi nhánh từ xa theo dõi upstream/master
được đồng bộ hóa với những thay đổi mới nhất từ upstream
. Tùy chọn, bạn cũng có thể cập nhật địa phương master
của bạn nếu bạn muốn:
git checkout master
git merge upstream/master
Bây giờ bạn có thể tạo các ngành chức năng tắt của upstream/master
:
git checkout -b feature upstream/master
Khi bạn muốn đồng bộ hóa các ngành chức năng của bạn với những thay đổi mới nhất từ upstream
, bạn có thể sử dụng rebase
, miễn là không có ai khác cũng đang làm việc trên nhánh tính năng (nếu không bạn sẽ buộc họ phải đồng bộ hóa lại với lịch sử đã thay đổi). rebase
là thực sự lý tưởng cho công việc này, bởi vì bạn thường có thể sử dụng nó để đồng bộ hóa các ngành chức năng thường xuyên như bạn muốn mà không cần tạo một lịch sử lộn xộn, bởi vì họ không tạo hợp nhất cam kết:
git fetch upstream
git checkout feature
git rebase upstream/master
Bạn cũng có thể thay git merge upstream/master
của rebasing, nhưng bạn sẽ để lại một cam kết hợp nhất, vì vậy theo thời gian bạn sẽ tạo ra một lịch sử phức tạp hơn bằng cách hợp nhất thay vì rebasing.
Khi bạn đã sẵn sàng gửi yêu cầu kéo, chỉ cần đẩy tới số origin
và thực hiện yêu cầu đối với thượng nguồn master
.
Những poster ban đầu hỏi:
[I] s Có cách nào để tạo ra một chi nhánh tại ngã ba của tôi mà là một bản sao hoàn hảo của thạc sĩ từ xa khác?
Chừng nào bạn địa phương master
chưa tách ra từ upstream/master
(mà nó không nên nếu bạn đã và đang làm công việc của bạn trong các ngành chức năng thay vì trực tiếp trong master
), sau đó chỉ cần đẩy địa phương của bạn master
để bạn origin
:
git push origin master
Ngoài ra, bạn có thể sử dụng một refspec để đẩy bạn từ xa theo dõi chi nhánh upstream/master
-origin/master
của bạn:
git push origin upstream/master:master
'git kéo thượng nguồn tổng thể: upstream-master'? – Ryan