git fork的使用

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
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章