日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Github代碼Fork之后,如何與原倉(cāng)庫(kù)進(jìn)行同步?

本文轉(zhuǎn)載自微信公眾號(hào)「程序新視界」,作者二師兄。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序新視界公眾號(hào)。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的寬甸網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

前言

我們?cè)谑褂肎itHub時(shí),看到好的項(xiàng)目或想給某個(gè)項(xiàng)目做貢獻(xiàn),此時(shí)通常會(huì)將代碼倉(cāng)庫(kù)fork到自己的賬號(hào)下。如果在此期間,如果源倉(cāng)庫(kù)的代碼發(fā)生了變動(dòng),就需要與源倉(cāng)庫(kù)代碼進(jìn)行同步。本篇文章就帶大家實(shí)操一下,如何實(shí)現(xiàn)這一操作。

配置項(xiàng)目的上游倉(cāng)庫(kù)

首先需要大家將fork的倉(cāng)庫(kù)代碼clone到本地,后面的所有操作都是基于本地代碼庫(kù)來(lái)進(jìn)行操作的。比如,可以通過(guò)git clone先將fork的代碼下載到本地:

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

后續(xù)的一步步操作,都是基于本地倉(cāng)庫(kù)來(lái)進(jìn)行操作。

進(jìn)入到本地倉(cāng)庫(kù)目錄

通過(guò)cd操作,進(jìn)入到clone下來(lái)的本地倉(cāng)庫(kù)根目錄:

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

后續(xù)的操作無(wú)特殊說(shuō)明,都是在這個(gè)本地倉(cāng)庫(kù)的目錄下進(jìn)行操作。

查看遠(yuǎn)程倉(cāng)庫(kù)路徑

執(zhí)行命令 git remote -v 查看遠(yuǎn)程倉(cāng)庫(kù)的路徑:

 
 
 
  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行內(nèi)容,說(shuō)明該項(xiàng)目還未設(shè)置upstream(中文叫:上游代碼庫(kù)),一般情況下,設(shè)置好一次upstream后就無(wú)需重復(fù)設(shè)置。通過(guò)顯示遠(yuǎn)程倉(cāng)庫(kù)的路徑和clone時(shí)的路徑對(duì)照,會(huì)發(fā)現(xiàn),此時(shí)遠(yuǎn)程倉(cāng)庫(kù)的路徑還是fork項(xiàng)目的路徑。

添加upstream路徑

執(zhí)行命令 git remote add upstream https://xxx.git,把fork的源倉(cāng)庫(kù)設(shè)置為 upstream 。這里項(xiàng)目是從alibaba的nacos倉(cāng)庫(kù)fork過(guò)來(lái)的,因此對(duì)應(yīng)的upstream就是alibaba的源倉(cāng)庫(kù)地址。

執(zhí)行上述命令,在此執(zhí)行g(shù)it 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) 

通過(guò)上面的輸出可以看出,多了兩項(xiàng)upstream的地址,說(shuō)明添加upstream成功。

檢查本地代碼狀態(tài)

由于我們的實(shí)例是直接從倉(cāng)庫(kù)clone下來(lái)的,本地還沒(méi)有修改代碼。如果你的本地項(xiàng)目已經(jīng)修改了一些代碼,不確定是否提交了代碼,就需要執(zhí)行g(shù)it status來(lái)檢查一下。

 
 
 
  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 

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

對(duì)應(yīng)推送到GitHub倉(cāng)庫(kù)的基本操作步驟如下:

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

完成上面的基本操作之后,確認(rèn)代碼都已經(jīng)提交,便可以開(kāi)始執(zhí)行源倉(cāng)庫(kù)與本地倉(cāng)庫(kù)的merge操作了。

抓取源倉(cāng)庫(kù)的更新

經(jīng)過(guò)上面步驟的準(zhǔn)備之后,我們可以進(jìn)行源倉(cāng)庫(kù)的代碼更新了。執(zhí)行命令 git fetch upstream 抓取原倉(cāng)庫(kù)的更新:

 
 
 
  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. //...省略一部分 

執(zhí)行上述命令之后,上游倉(cāng)庫(kù)的更新(commit)會(huì)本存儲(chǔ)為本地的分支,通常名稱為:upstream/BRANCHNAME。比如上面的upstream/0.3.0。

切換分支

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

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

上面提示已經(jīng)是develop分支了。

執(zhí)行合并

執(zhí)行命令 git merge upstream/develop 合并遠(yuǎn)程的develop分支。比如你合并的可能是master,可根據(jù)需要將develop的名稱替換成對(duì)應(yīng)的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. 

執(zhí)行完上述命令之后,會(huì)發(fā)現(xiàn)上游代碼指定分支的修改內(nèi)容已經(jīng)反映到本地代碼了。

上傳代碼到fork分支

執(zhí)行完上一步的合并操作之后,往后還有一些后續(xù)處理,比如代碼沖突。如果本地修改了內(nèi)容,上游倉(cāng)庫(kù)也修改了對(duì)應(yīng)的代碼,則可能會(huì)出現(xiàn)沖突。這時(shí)就需要對(duì)比代碼進(jìn)行修改。本人更習(xí)慣使用IDEA中可視化的插件進(jìn)行代碼沖突解決,你也可以選擇你喜歡的方式進(jìn)行解決。

解決完沖突之后,就可以執(zhí)行正常的代碼add、commit和push操作了。這里的一系列操作都是針對(duì)自己fork的倉(cāng)庫(kù)的,對(duì)應(yīng)操作實(shí)例如下:

 
 
 
  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 

上述操作,通過(guò)add、commit、push一系列操作,將源倉(cāng)庫(kù)中的修改內(nèi)容,提交到自己fork的分支當(dāng)中了。此時(shí)再查看自己fork的GitHub倉(cāng)庫(kù),發(fā)現(xiàn)代碼已經(jīng)更新。

小結(jié)

本篇文章介紹了當(dāng)我們fork一個(gè)倉(cāng)庫(kù)代碼之后,如何將上游倉(cāng)庫(kù)最新的代碼與自己倉(cāng)庫(kù)進(jìn)行同步更新。如果你喜歡fork一些優(yōu)秀的代碼,需要在GitHub上為開(kāi)源項(xiàng)目做貢獻(xiàn),那么這個(gè)基本的操作必須得了解一下。


文章名稱:Github代碼Fork之后,如何與原倉(cāng)庫(kù)進(jìn)行同步?
路徑分享:http://m.5511xx.com/article/cdoepsc.html