Làm thế nào để bạn cập nhật một ngã ba repo GitHub trong giao diện web?


58

Tôi có một kho lưu trữ Github mà tôi đã rẽ nhánh từ một số dự án khác vài tháng trước. Bây giờ là vài tháng sau và repo gốc đã thay đổi. Tôi muốn cập nhật repo của tôi để phản ánh những thay đổi đó. Điều này có thể có trong giao diện web Github không? Hay tôi chỉ cần xóa repo và fork lại nó?




Câu trả lời:


43

Bạn có thể thử và đảo ngược cách yêu cầu kéo xảy ra.

  1. Đi đến ngã ba của bạn
  2. Đưa ra yêu cầu kéo

    Theo mặc định, đây sẽ là ngã ba của bạn ở bên phải ( repo đầu ) yêu cầu đẩy các cam kết của nó và thay đổi thành repo gốc ( repo cơ sở ) ở bên trái.

  3. Nhấp vào thả xuống cho cả repo cơ sở và repo đầu và chọn repos của nhau.

    Bạn muốn danh sách của bạn được liệt kê ở bên trái (chấp nhận thay đổi) trong khi kho lưu trữ ban đầu ở bên phải (kho lưu trữ có thay đổi để đẩy). Như được minh họa trong hình ảnh này:

    ngã ba thực hiện trên chính nó

  4. Gửi yêu cầu kéo

    Nếu ngã ba của bạn không có bất kỳ thay đổi nào, bạn sẽ có thể tự động chấp nhận hợp nhất.

Nếu mã của bạn bằng cách nào đó xung đột hoặc không đủ sạch, thì điều này sẽ không hoạt động để cập nhật qua giao diện web GitHub và bạn sẽ cần lấy mã và giải quyết bất kỳ xung đột nào trên máy của mình trước khi quay trở lại ngã ba.


3
Điều này vẫn hoạt động nhưng vâng nó không lý tưởng. Nó chắc chắn chỉ là một mẹo. Không phải là cách thích hợp để làm điều đó.
Jake Wilson

3
Khẳng định một ý kiến ​​tồi. Điều này gây ô nhiễm kho lưu trữ theo cách mà Github đề nghị bạn kéo yêu cầu một cam kết trống vào dự án ban đầu. Xem ví dụ github.com/dthommes/RoboSpring/pull/3 - Khi tôi đã đóng góp cho nó, sau đó tôi đã đồng bộ hóa và bây giờ Github muốn tôi đẩy một cam kết "Đồng bộ hóa ngã ba của tôi" được gắn nhãn là "Hợp nhất yêu cầu kéo số 1 từ dthommes / master
Tiết kiệm

1
Tôi không nghĩ rằng nó hoạt động nữa. Mặc dù có vẻ hơi kỳ lạ nhưng không có cách nào đơn giản để làm điều này.
Toby Allen

1
Tôi mới thử nó và nó dường như không hoạt động ngay lập tức - khi thay đổi một trong các nhánh, nó ngay lập tức mở ra trang "So sánh các thay đổi". Nhưng nhấp vào liên kết "so sánh giữa các nhánh" được phép thay đổi ngã ba khác. Có lẽ bạn có thể thêm một cái gì đó vào hiệu ứng này vào câu trả lời của bạn.
Peter Mortensen

4
GitHub nên thêm nút "Đồng bộ hóa ngã ba" để bạn không phải tạo ra một triệu PR. Hiện tại tôi đang sử dụng dòng lệnh để cập nhật các nhánh của mình
Suici Doga

22

Nó sẽ dễ dàng hơn.

  1. Chuyển đến Forked Repo (của bạn) và chỉ cần nhấp vào nút - "Yêu cầu kéo mới".
  2. Trên trang mở ra, có một liên kết nhỏ đến "cơ sở chuyển đổi" trong thông báo bên dưới danh sách thả xuống. Nhấp vào liên kết.
  3. Bây giờ nó sẽ tự động dẫn đến repo ban đầu của bạn. Nhấp vào nút Tạo yêu cầu kéo và viết một số thông điệp cam kết.
  4. Bây giờ nó sẽ dẫn đến repo rẽ nhánh của bạn tự động, nhấp vào Hợp nhất yêu cầu kéoXác nhận hợp nhất để kết thúc.

Bạn nên làm rõ những nút màu xanh lá cây đó là gì và nó sẽ là một phản ứng tuyệt vời ....
Rodrigo Graça

Đây chắc chắn là câu trả lời tốt nhất tính đến 4/2016.
dr01

7
Vấn đề với phương pháp này là nó thêm một cam kết bổ sung cho chi nhánh của bạn, vì vậy nó không thực sự đồng bộ với repo ngược dòng.
Mottie

@Mottie Có cách nào để chúng tôi biết liệu ngã ba của chúng tôi có đứng sau phiên bản ngược dòng mới nhất hay không và xem sự khác biệt của các thay đổi, mà không thực sự kéo chúng?
Sujay Phadke

1
@SujayPhadke Trên trang repo rẽ nhánh chính của bạn dưới nút chọn chi nhánh sẽ có thông báo "Chi nhánh này là xx cam kết sau xxxx: master.". Đối với việc xem khác biệt, có một nút "so sánh" trong cùng một hàng với thông báo; hoặc bạn có thể truy cập liên kết này:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie

3

Cách cập nhật repo GitHub rẽ nhánh với các thay đổi từ kho lưu trữ ngược dòng từ xa


Hướng dẫn từ GitHub Trợ giúp:

Cấu hình một ngã ba từ xa

Đồng bộ hóa một ngã ba


Hướng dẫn cài đặt / vận hành:

Mở Git Bash (Windows) hoặc Linux / Mac Terminal

Nếu bạn chưa sao chép kho lưu trữ của mình, bạn phải thay đổi thư mục làm việc của thư mục phát triển và sao chép nó vào máy trạm của bạn.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

Thay đổi thư mục làm việc của repo ngã ba trên máy trạm của bạn.

$ cd /user/development/my_forked_repo/

Liệt kê kho lưu trữ từ xa được cấu hình hiện tại cho ngã ba của bạn.

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Chỉ định một kho lưu trữ ngược dòng từ xa mới sẽ được đồng bộ hóa với ngã ba.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Xác nhận kho lưu trữ ngược dòng mới mà bạn đã chỉ định cho ngã ba của mình.

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Lấy các nhánh và các cam kết tương ứng của chúng từ kho lưu trữ ngược dòng. Cam kết với chủ sẽ được lưu trữ trong một nhánh cục bộ, ngược dòng / chính.

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

Kiểm tra chi nhánh tổng thể địa phương của ngã ba của bạn.

$ git checkout master

Switched to branch 'master'

Hợp nhất các thay đổi từ thượng nguồn / chủ vào nhánh chính cục bộ của bạn. Điều này mang lại nhánh chính của ngã ba của bạn đồng bộ với kho lưu trữ ngược dòng mà không làm mất các thay đổi cục bộ của bạn.

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

Nếu chi nhánh địa phương của bạn không có bất kỳ cam kết duy nhất nào, thay vào đó Git sẽ thực hiện "chuyển tiếp nhanh":

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Bây giờ bạn sẽ cần phải đẩy các cam kết đến ngã ba của bạn.

$ git push

Nếu bạn chưa được xác thực, nó sẽ nhắc tên người dùng / mật khẩu github của bạn. Sau khi xác thực, các cam kết mới sẽ được đẩy đến ngã ba của bạn và hiển thị trên github.


5
Cảm ơn bạn đã trả lời chi tiết của bạn tuy nhiên hy vọng là một giải pháp sử dụng giao diện web.
Toby Allen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.