2011-02-08 37 views
26

Hãy nói rằng một kho lưu trữ từ mà tôi sao chép (và chỉ read-only cho tôi) là:Cập nhật chia hai dự án trên GitHub

[email protected]:secret_project/dev.git branch: dev 

tôi chia hai dự án và URL:

[email protected]:secret_user/Dde.git 

(Mà tôi có quyền truy cập đầy đủ vào: đọc + ghi)

Nhưng ai đó đã cập nhật [email protected]:secret_project/dev.git từ một phiên bản được chia nhỏ khác.

Giả sử các tệp thay đổi trên

[email protected]:secret_project/dev.git (test.txt) 
content: 
hi! 

Nhưng dự án chia hai của tôi có test.txt tập tin với nội dung:

hi 

Vì vậy, làm thế nào để cập nhật các dự án chia hai địa phương và trong kho của tôi?

Tôi nên sử dụng các lệnh nào? Và hãy một ví dụ với kho cho thấy tôi ...

+0

thể trùng lặp của [Làm thế nào để cập nhật GitHub chia hai kho?] (http://stackoverflow.com/questions/7 244321/how-to-update-github-forked-repository) – kapa

+2

@kapa: 'Làm thế nào để cập nhật kho lưu trữ GitHub?' Là mới hơn so với bài đăng này ... – mpromonet

Trả lời

20

Bạn nên thêm địa chỉ từ xa cho các kho lưu trữ ban đầu 'upstream' vào kho lưu trữ địa phương của bạn (đó là một bản sao của Dde.git ngã ba của bạn):

git remote add upstream git://github.com/secret_project/dev.git # public read-only URL 

Điều đó sẽ cho phép bạn kéo 'upstream' vào chi nhánh của riêng bạn (sáp nhập và giải quyết bất kỳ xung đột hợp nhất nào trong test.txt).
Sau đó, bạn sẽ đẩy chi nhánh địa phương của mình đến kho lưu trữ Dde GitHub của bạn.

Xem GitHub help page: "Working with remotes" để biết thêm chi tiết.

+1

Nếu bạn đặt tên là 'upstream' - vậy, hãy gõ 'git remote add upstream' thay vì 'git remote add dev' - bạn sẽ có thể theo dõi [tài liệu GitHub" Syncing a fork "] (https://help.github.com/articles/syncing-a-fork/).Bạn cũng sẽ rõ ràng hơn về sự phát triển nào là của bạn và cái đã được thực hiện, tốt, thượng nguồn. – fureigh

+1

@fureigh Cảm ơn bạn. Tôi thường làm điều đó trong các câu trả lời sau (như http://stackoverflow.com/a/9257901/6309), nhưng tôi dường như không có thực hành đó từ 5 năm trước. Tôi đã chỉnh sửa câu trả lời cho phù hợp. – VonC

+0

Cảm ơn bạn đã cập nhật câu trả lời! (Ngoài ra, tôi nhận thấy rằng trong giai điệu của tôi có thể đã đọc như snarky - nó chắc chắn không được dự định theo cách đó, vì vậy nếu nó đi theo cách đó, xin lỗi của tôi.) – fureigh

1

Chỉ cần gửi yêu cầu kéo từ trang GitHub của kho lưu trữ đến kho lưu trữ Gốc của bạn. Sau đó kéo các thay đổi trong repo được chia đôi cục bộ của bạn và cam kết và gửi một yêu cầu kéo mới.

-1

Các bước ở đây sẽ di chuyển nĩa của bạn với cùng cam kết như kho mẹ:

  1. Thay đổi thư mục lưu trữ tại địa phương. Chuyển đến chi nhánh tổng thể nếu bạn không và gõ này git checkout master
  2. Thêm phụ huynh như một kho lưu trữ từ xa, git remote add upstream <repo-location>
  3. Issue git fetch upstream
  4. Issue git rebase upstream/master Ở giai đoạn này, bạn kiểm tra xem cam kết những gì sẽ được sáp nhập bằng cách gõ git status
  5. Issue git push origin master
+1

Trông như một bản sao gần như sao chép này [câu trả lời khác ] (/ a/31836086/1178314) cho [câu hỏi kép] này (/ q/7244321/1178314). Trong trường hợp này, bạn nên đưa ra tín dụng cho câu trả lời ban đầu. –

Các vấn đề liên quan