Việc cần làm tiếp theo là: tiếp tục đóng góp các tính năng mới hoặc sửa các lỗi khác trong các nhánh chuyên dụng của riêng họ (chỉ được đẩy đến ngã ba của bạn).
Có nghĩa là ngã ba của bạn vẫn ở, nhưng các nhánh bên trong ngã ba của bạn có thể đến và đi.
Bạn cũng có thể xóa fork nếu bạn không định đóng góp thêm, nhưng nó sẽ xóa mục nhập tương ứng trong 'Kho lưu trữ bạn đóng góp vào' .
Nó dễ dàng hơn để:
- xóa
fix
chi nhánh của bạn (trên thực tế, nó hiện đã bị xóa cho bạn ) trên fork của bạn (và trong repo nhân bản cục bộ của bạn: xem " Xóa chi nhánh Git cả cục bộ và từ xa ")
git pull upstream master
(nếu master
là nhánh mà bản sửa lỗi của bạn đã được tích hợp: hợp nhất sẽ là một nhánh tua đi nhanh): không cần rebase tại thời điểm này.
- tạo lại một nhánh sửa chữa trên đầu trang cục bộ đã cập nhật của bạn
master
(hiện có mới nhất từ upstream master
).
Tuy nhiên, đừng bao giờ quên một bước trước khi gửi bất kỳ yêu cầu kéo nào trong tương lai :
đầu tiên rebase chi nhánh hiện tại của bạn ( fix
) từ chi nhánh đích ngược dòng
( upstream
là bản repo ban đầu mà bạn đã fork: xem " Sự khác biệt giữa nguồn gốc và phần ngược dòng trong github là gì ")
Trước khi gửi bất kỳ thứ gì trở lại repo ban đầu ("ngược dòng"), bạn cần đảm bảo công việc của mình dựa trên những thông tin mới nhất từ repo gốc đã nói (hoặc yêu cầu kéo sẽ không dẫn đến hợp nhất tua đi nhanh khi được áp dụng trở lại upstream
repo).
Ví dụ: xem " Quy trình làm việc để quản lý các yêu cầu kéo trên các kho lưu trữ được chia sẻ trong github ".
Nói cách khác, upstream
có thể phát triển (có các cam kết mới được đẩy lên) trong khi bạn đang bận sửa chữa mọi thứ. Bạn cần phát lại các bản sửa lỗi của mình trên đầu tác phẩm mới nhất đó từ ngược dòng để đảm bảo các cam kết của bạn vẫn tương thích với bản mới nhất của upstream
.
Các OP Santosh Kumar hỏi trong các ý kiến :
Tôi đã kéo và hợp nhất từ upstream
thành chủ, bây giờ thì sao?
Nếu bạn chưa thực hiện bất kỳ bản sửa lỗi mới nào kể từ lần yêu cầu kéo gần đây của mình, hãy xem ở trên (xóa và tạo lại một nhánh mới fix
trên đầu bản cập nhật của bạn master
).
Nếu bạn đã thực hiện thêm bất kỳ công việc nào kể từ yêu cầu kéo của bạn, tôi sẽ không hợp nhất từ upstream
nếu tôi muốn tạo một yêu cầu kéo mới : Tôi sẽ kéo và rebase :
git pull --rebase upstream master
Bằng cách đó, tất cả công việc cục bộ mới của tôi được phát lại trên đầu các upstream
master
cam kết gần đây nhất (được tìm nạp trong kho lưu trữ cục bộ của tôi), giả sử đó master
là nhánh mục tiêu sẽ tích hợp yêu cầu kéo trong tương lai của tôi.
Sau đó, tôi có thể đẩy công việc địa phương của mình lên ' origin
', đó là ngã ba của tôi trên GitHub của upstream
.
Và từ fork của tôi trên GitHub, tôi có thể thực hiện một yêu cầu kéo một cách an toàn, biết rằng nó sẽ chỉ thêm các cam kết mới upstream
mà không cần bất kỳ giải pháp hợp nhất nào: việc hợp nhất các cam kết mới đó trong upstream
repo sẽ có nghĩa là hợp nhất chuyển tiếp nhanh đơn giản.
A git pull --rebase
mà không chỉ định nhánh mà bạn muốn căn cứ lại fix
nhánh (hiện đã kiểm tra) của bạn sẽ không hoạt động:
Điều đó ( git pull --rebase
) nói:
You asked to pull from the remote '`upstream`', but did not specify a branch.
Cuối cùng thì tôi có nên nối master không? Và điều này sẽ làm gì ?, nó có xóa fix
chi nhánh của tôi không?
Có, bạn có thể chỉ định nhánh sẽ là mục tiêu của yêu cầu kéo, ví dụ: ' master
'.
Điều đó sẽ không xóa fix
chi nhánh của bạn , nhưng sẽ phát lại nó trên đầu trang ngược dòng master
được tìm nạp trong repo của bạn.
:)