Gần đây, tôi đã tham gia xây dựng một dự án cho một khách hàng, và để quản lý mã nguồn, chúng tôi sử dụng GitHub. Ban đầu, tôi đã sao chép (forked) mã nguồn từ nhánh master của khách hàng vào tài khoản GitHub cá nhân của mình để bắt đầu chỉnh sửa mã nguồn trên đó.
Sau một vài ngày, một nhà phát triển khác trong dự án đã thực hiện một số thay đổi trên nhánh master của khách hàng. Để tránh xung đột với những thay đổi này và cập nhật mã nguồn mới nhất từ nhánh master của khách hàng vào bản fork của mình, tôi đã tìm hiểu cách thực hiện điều này và xin chia sẻ cách làm đó với bạn đọc qua bài viết này.
1. Cấu hình Remote Repository cho tài khoản fork của bạn trên GitHub
Bước 1: Liệt kê danh sách remote repository của tài khoản fork của bạn.
$ git remote -v origin https://github.com/vinasupport/YOUR_FORK.git (fetch) origin https://github.com/vinasupport/YOUR_FORK.git (push)
Bước 2: Chỉ ra remote upstream repository sẽ được đồng bộ với tài khoản fork của bạn
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
Bước 3: Xác nhận lại danh sách remote repository
$ git remote -v origin https://github.com/vinasupport/YOUR_FORK.git (fetch) origin https://github.com/vinasupport/YOUR_FORK.git (push) upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
2. Đồng bộ source code cho tài khoản Fork của bạn trên GitHub
Bước 1: Mở Terminal và thay đổi đường dẫn tới nơi chưa source code của bạn trên máy tính (Nơi bạn checkout source trên GitHub)
Bước 2: Fetch dữ liệu từ Upstream Repository
$ 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
Bước 3: Checkout branch master tài khoản Fork của bạn
$ git checkout master Switched to branch 'master'
Bước 4: Merge sự thay đổi giữa upstream/master với bản master branch trên máy tính 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
Bước 5: Push sự thay đổi lên branch trên GitHub
$ git push origin master