fork 了別人的倉庫後,原作者又更新了倉庫,如何將自己的代碼和原倉庫保持一致?本文將給你解答。
假設遠程源倉庫爲A,自己fork後的遠程倉庫爲B,自己本地的代碼倉庫爲C
1. 給 fork 配置一個 remote
一般來說從自己遠程倉庫B去拉代碼後就會有remote
使用 git remote -v 查看遠程狀態。
git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
2. 添加一個將被同步給 fork 遠程的上游倉庫A
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
再次查看狀態確認是否配置成功。
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)
3. 執行同步fork操作
從上游倉庫A fetch 分支和提交點,傳送到本地,並會被存儲在一個本地分支 upstream/master
git fetch upstream,默認會將遠程所有的分支fetch下來
remote: Counting objects: 41, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 41 (delta 17), reused 0 (delta 0)
Unpacking objects: 100% (41/41), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
* [new branch] dev -> upstream/dev
* [new branch] master -> upstream/master
4.將upstream的代碼合併到本地倉庫C上
4.1 分支切換&同步自己的遠程倉庫
首先在本地代碼C上從master創建分支git checkout -b dev
執行git pull origin dev:dev或者git pull origin master 從自己的遠程倉庫B上拉取最新的代碼
4.2 執行合併upstream操作
使用git merge upstream/master命令,把 upstream/master 分支合併到本地 master 上
如果想同步遠程倉庫A非master源的代碼到自己倉庫B上來,比如說遠程遠有兩個分支,master和dev則
合併非master分支的代碼, 使用git merge upstream/dev命令,把 upstream/dev 分支合併到本地 dev 上
這樣就完成了同步,並且不會丟掉本地修改的內容。
git merge upstream/master
Updating a422352..5fdff0f
Fast-forward
README | 9 -------
5.push本地代碼到自己的遠程倉庫
執行git push origin master將本地倉庫master分支的代碼推送到自己遠程倉庫B的master分支上
或者git push origin dev:dev將本地倉庫dev分支的代碼推送到自己遠程倉庫B的dev分支上
歡迎大家掃碼關注我的微信公衆號,與大家一起分享技術與成長中的故事。
作者:shunyang
鏈接:https://www.jianshu.com/p/d73dcee2d907
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。