成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Github代碼Fork之后,如何與原倉庫進行同步?

開發 項目管理
本篇文章介紹了當我們fork一個倉庫代碼之后,如何將上游倉庫最新的代碼與自己倉庫進行同步更新。如果你喜歡fork一些優秀的代碼,需要在GitHub上為開源項目做貢獻,那么這個基本的操作必須得了解一下。

 [[403366]]

本文轉載自微信公眾號「程序新視界」,作者二師兄。轉載本文請聯系程序新視界公眾號。

前言

我們在使用GitHub時,看到好的項目或想給某個項目做貢獻,此時通常會將代碼倉庫fork到自己的賬號下。如果在此期間,如果源倉庫的代碼發生了變動,就需要與源倉庫代碼進行同步。本篇文章就帶大家實操一下,如何實現這一操作。

配置項目的上游倉庫

首先需要大家將fork的倉庫代碼clone到本地,后面的所有操作都是基于本地代碼庫來進行操作的。比如,可以通過git clone先將fork的代碼下載到本地:

  1. git clone git@github.com:secbr/nacos.git 

后續的一步步操作,都是基于本地倉庫來進行操作。

進入到本地倉庫目錄

通過cd操作,進入到clone下來的本地倉庫根目錄:

  1. cd /Users/apple/develop/nacos-request/nacos 

后續的操作無特殊說明,都是在這個本地倉庫的目錄下進行操作。

查看遠程倉庫路徑

執行命令 git remote -v 查看遠程倉庫的路徑:

  1. appledeMacBook-Pro-2:nacos apple$ git remote -v 
  2. origin  https://github.com/secbr/nacos.git (fetch
  3. origin  https://github.com/secbr/nacos.git (push) 

如果只顯示2行內容,說明該項目還未設置upstream(中文叫:上游代碼庫),一般情況下,設置好一次upstream后就無需重復設置。通過顯示遠程倉庫的路徑和clone時的路徑對照,會發現,此時遠程倉庫的路徑還是fork項目的路徑。

添加upstream路徑

執行命令 git remote add upstream https://xxx.git,把fork的源倉庫設置為 upstream 。這里項目是從alibaba的nacos倉庫fork過來的,因此對應的upstream就是alibaba的源倉庫地址。

執行上述命令,在此執行git remote -v 檢查是否成功。

  1. appledeMacBook-Pro-2:nacos apple$ git remote add upstream https://github.com/alibaba/nacos.git 
  2. appledeMacBook-Pro-2:nacos apple$ git remote -v 
  3. origin  https://github.com/secbr/nacos.git (fetch
  4. origin  https://github.com/secbr/nacos.git (push) 
  5. upstream        https://github.com/alibaba/nacos.git (fetch
  6. upstream        https://github.com/alibaba/nacos.git (push) 

通過上面的輸出可以看出,多了兩項upstream的地址,說明添加upstream成功。

檢查本地代碼狀態

由于我們的實例是直接從倉庫clone下來的,本地還沒有修改代碼。如果你的本地項目已經修改了一些代碼,不確定是否提交了代碼,就需要執行git status來檢查一下。

  1. appledeMacBook-Pro-2:nacos apple$ git status 
  2. On branch develop 
  3. Your branch is up to date with 'origin/develop'
  4.  
  5. nothing to commit, working tree clean 

上面顯示,本地沒有需要提交的(commit)的代碼。如果本地有修改,需要先從本地倉庫推送到GitHub倉庫。然后,再執行一次 git status 檢查。

對應推送到GitHub倉庫的基本操作步驟如下:

  1. git add -A 或者 git add filename 
  2. git commit -m "your note" 
  3. git push origin master 
  4. git status 

完成上面的基本操作之后,確認代碼都已經提交,便可以開始執行源倉庫與本地倉庫的merge操作了。

抓取源倉庫的更新

經過上面步驟的準備之后,我們可以進行源倉庫的代碼更新了。執行命令 git fetch upstream 抓取原倉庫的更新:

  1. appledeMacBook-Pro-2:nacos apple$ git fetch upstream 
  2. remote: Enumerating objects: 2646, done. 
  3. remote: Counting objects: 100% (2593/2593), done. 
  4. remote: Compressing objects: 100% (1157/1157), done. 
  5. remote: Total 2646 (delta 731), reused 2404 (delta 682), pack-reused 53 
  6. Receiving objects: 100% (2646/2646), 1.67 MiB | 1.47 MiB/s, done. 
  7. Resolving deltas: 100% (734/734), completed with 37 local objects. 
  8. From https://github.com/alibaba/nacos 
  9.  * [new branch]          0.2.1                               -> upstream/0.2.1 
  10.  * [new branch]          0.2.2                               -> upstream/0.2.2 
  11.  * [new branch]          0.3.0                               -> upstream/0.3.0 
  12. //...省略一部分 

執行上述命令之后,上游倉庫的更新(commit)會本存儲為本地的分支,通常名稱為:upstream/BRANCHNAME。比如上面的upstream/0.3.0。

切換分支

完成了上游倉庫分支的拉取之后,先來核查一下本地倉庫當前處于哪個分支,也就是需要更新合并的分支。比如,這里我需要將develop分支的內容更新到與上游倉庫代碼一致。則先切換到develop分支:

  1. appledeMacBook-Pro-2:nacos apple$ git checkout develop 
  2. Already on 'develop' 
  3. Your branch is up to date with 'origin/develop'

上面提示已經是develop分支了。

執行合并

執行命令 git merge upstream/develop 合并遠程的develop分支。比如你合并的可能是master,可根據需要將develop的名稱替換成對應的master。

  1. appledeMacBook-Pro-2:nacos apple$ git merge upstream/develop 
  2. Removing test/src/test/java/com/alibaba/nacos/test/naming/DeregisterInstance_ITCase.java 
  3. // ...省略一部分 
  4. Removing naming/src/test/java/com/alibaba/nacos/naming/core/PushServiceTest.java 
  5. Auto-merging client/src/main/java/com/alibaba/nacos/client/naming/remote/http/NamingHttpClientProxy.java 
  6. CONFLICT (content): Merge conflict in client/src/main/java/com/alibaba/nacos/client/naming/remote/http/NamingHttpClientProxy.java 
  7. Removing client/src/main/java/com/alibaba/nacos/client/naming/core/HostReactor.java 
  8. Removing .editorconfig 
  9. Automatic merge failed; fix conflicts and then commit the result. 

執行完上述命令之后,會發現上游代碼指定分支的修改內容已經反映到本地代碼了。

上傳代碼到fork分支

執行完上一步的合并操作之后,往后還有一些后續處理,比如代碼沖突。如果本地修改了內容,上游倉庫也修改了對應的代碼,則可能會出現沖突。這時就需要對比代碼進行修改。本人更習慣使用IDEA中可視化的插件進行代碼沖突解決,你也可以選擇你喜歡的方式進行解決。

解決完沖突之后,就可以執行正常的代碼add、commit和push操作了。這里的一系列操作都是針對自己fork的倉庫的,對應操作實例如下:

  1. appledeMacBook-Pro-2:nacos apple$ git add . 
  2. appledeMacBook-Pro-2:nacos apple$ git commit -m 'merge from nacos' 
  3. [develop 8601c1791] merge from nacos  
  4. appledeMacBook-Pro-2:nacos apple$ git push 
  5. Enumerating objects: 4, done. 
  6. Counting objects: 100% (4/4), done. 
  7. Delta compression using up to 12 threads 
  8. Compressing objects: 100% (2/2), done. 
  9. Writing objects: 100% (2/2), 281 bytes | 281.00 KiB/s, done. 
  10. Total 2 (delta 1), reused 0 (delta 0), pack-reused 0 
  11. remote: Resolving deltas: 100% (1/1), completed with 1 local object. 
  12. To https://github.com/secbr/nacos.git 
  13.    76a4dcbb1..8601c1791  develop -> develop 

上述操作,通過add、commit、push一系列操作,將源倉庫中的修改內容,提交到自己fork的分支當中了。此時再查看自己fork的GitHub倉庫,發現代碼已經更新。

小結

本篇文章介紹了當我們fork一個倉庫代碼之后,如何將上游倉庫最新的代碼與自己倉庫進行同步更新。如果你喜歡fork一些優秀的代碼,需要在GitHub上為開源項目做貢獻,那么這個基本的操作必須得了解一下。

 

責任編輯:武曉燕 來源: 程序新視界
相關推薦

2014-09-01 09:49:24

github

2020-01-02 19:00:05

AnsibleGitHubGitLab

2024-08-16 15:12:53

2019-06-14 13:50:03

應用程序Windows 10 數據同步

2011-03-25 10:25:30

同步方法同步代碼塊

2011-09-15 11:31:21

linux軟件倉庫

2020-08-19 12:37:09

PandasGithub代碼庫

2014-03-31 14:50:19

Hyper-V

2014-03-31 15:13:08

Hyper-V虛擬化

2010-06-01 14:35:16

SVN倉庫導出

2010-02-03 13:55:51

Python 代碼

2021-03-22 11:40:33

GitHub 技術開源

2018-01-28 14:50:33

開發語言數據

2020-10-13 10:28:39

源代碼泄露Github倉庫

2017-01-09 09:20:07

Ubuntu NTP同步

2009-12-10 16:50:58

Visual Stud

2014-05-14 00:50:18

JoyentNode

2019-02-26 10:15:13

GitHub 開源代碼

2016-11-18 09:37:07

EC2,云計算故障賠償

2024-02-22 10:27:00

Python開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产目拍亚洲精品99久久精品 | 视频精品一区二区三区 | 就操在线 | 在线成人| 国产精品极品美女在线观看免费 | 国产亚洲一区二区在线观看 | 欧美亚洲高清 | 热99精品视频 | 337p日本欧洲亚洲大胆精蜜臀 | 综合久久综合久久 | 国产精品亚洲成在人线 | 久久视频精品在线 | 久久久久久www | 成人免费视频网站在线看 | 中文字幕av中文字幕 | 欧美日韩在线免费 | 久久久久久91| 就操在线 | 欧美日本在线观看 | 天天看片天天干 | 国产亚洲欧美另类一区二区三区 | 国产精品第2页 | 亚洲欧美中文日韩在线v日本 | 欧美激情一区二区 | 精品国产乱码久久久久久蜜退臀 | 中文字幕在线一区 | 亚洲一区视频在线播放 | 伊人精品久久久久77777 | 亚洲成人二区 | 国产精品视频网 | 日韩国产在线观看 | 犬夜叉在线观看 | 国产香蕉视频在线播放 | 国产成人精品免费视频大全最热 | 国产精品成人在线 | 色姑娘综合网 | 欧洲妇女成人淫片aaa视频 | 91视频导航 | 国产精品国产亚洲精品看不卡15 | 国产在线视频一区 | 亚洲一区二区av |