例如 要fork一份google的MLperf/inference代碼,下面介紹具體做法:
預備知識
git里的參考有幾種表示,分別是上游倉庫,遠程倉庫和本地倉庫,邏輯關系如下
拉取代碼的順序:
別的大牛的代碼(上游倉庫)---------->你fork的代碼(遠程倉庫)---------->你電腦的代碼(本地倉庫)
提交代碼的順序:
別的大牛的代碼(上游倉庫)<----------你fork的代碼(遠程倉庫)<----------你電腦的代碼(本地倉庫)
每個倉庫主分支是master,還可以有其它分支
上游倉庫的表示為 upstream,遠程倉庫表示為origin
具體步驟
1、進入MLperf/inference倉庫,點擊fork按鈕,拷貝代碼到自己的git賬號的倉庫里

2、之后再自己的賬號里就可以看到fork的代碼了,可以看到代碼的fork來源,即上游倉庫地址

3、下載代碼到你的本地電腦里,windows可以使用GitBash工具類似linux命令列的操作
下面是在本地電腦里進行的操作:
# 創建inference目錄
$ mkdir inference
# 切換到inference目錄
$ cd inference
# 創建并初始化git庫
$ git init
# 添加遠程git倉庫
$ git remote add origin https://github.com/yananYangYSU/inference.git
# 添加SSH秘鑰到git遠程庫,郵箱可以從git賬號里查看
$ ssh-keygen -t rsa -C "[email protected]"

# 查看秘鑰
cat ~/.ssh/id_rsa.pub

# 復制添加到你git賬號里的ssh key串列里,就可以通過安全認證傳輸資料了

# 將遠程git庫代碼下載到本地 (origin代表遠程倉庫,master代表主分支)
git pull origin master

代碼下載完了之后,這時候你本地倉庫和遠程倉庫的代碼一致了,接下來對代碼進行修改
4、修改本地倉庫的代碼并提交到遠程倉庫
假設我們要修改README.md檔案,有兩種方式可供選擇:
---------------------------------------------------------------------------------------------------------------------------
第一種方式,直接在master分支上做修改,命令如下:
# 修改README.md
$ echo "abc" >> README.md
# 添加要提交的臨時檔案
$ git add README.md
# 提交更改
$ git commit -m 'commit'
# 將本地倉庫的修改上傳到遠程倉庫
$ git push -u origin master
---------------------------------------------------------------------------------------------------------------------------
第二種方式,在master分支基礎上切出一個dev分支,然后在dev分支上修改,修改完成后,再將dev分支merge到master分支
# 首先切換到dev分支
$ git checkout -b dev
$ echo "abc" >> README.md
# 添加要提交的臨時檔案
$ git add README.md
# 提交更改
$ git commit -m 'commit'
# 將本地倉庫的修改上傳到遠程倉庫
$ git checkout master
$ git merge dev
# 將本地倉庫的修改上傳到遠程倉庫
$ git push -u origin master
---------------------------------------------------------------------------------------------------------------------------
注意如果再push之前,上游倉庫有人做了代碼修改,那么此時你本地和遠程倉庫的代碼就不是最新的了,此時需要把上游倉庫的代碼合并到本地,然后再push到遠程倉庫
# 添加上游倉庫地址
$ git remote add upstream https://github.com/mlperf/inference.git
# 查看 origin 和 upstream 對應的倉庫是否正確
$ git remote -v

origin對應的是自己github的地址,即yourname/project
upstream對應的是原專案的地址,即sourcename/project
# 從上游倉庫獲取最新的代碼合并到自己本地倉庫的master分支上
$ git pull upstream master
推薦每次代碼待提交前,都從原專案拉取一下最新的代碼,最后再使用git push命令將改動同步到自己的Github遠程倉庫中:
$ git push -u origin master
5、將遠程倉庫的代碼提交到上游倉庫:
進入GitHub賬號的遠程倉庫,此時已經能夠看到剛剛從本地倉庫提交的修改了,然后點擊New pull request

進入結果對比頁面,如下圖所示:

可以看到從遠程庫的master分支向上游倉庫的master分支申請提交代碼
Able to merge代表你的代碼與上游代碼沒有沖突,可以提交
然后點擊 create pull request,進入下面頁面:

填寫注釋,描述你所作的修改,然后點擊右下角提交

然后進入上游倉庫的地址,在上游倉庫的Pull requests串列里就可以看到自己的提交請求了,等待作者審核即可
附錄:
如果是google的代碼,那么提交代碼要同意開發者協議,此時需要注冊Gmail郵箱,申請Google Individual CLA,然后使用通過驗證的gmail郵箱去修改并提交代碼,google的robot才會通過你的代碼提交驗證,不然提交的pull request申請是無法通過校驗的
準備好gmail郵箱后,在github的賬號里配置個人配置github郵箱

然后在git命令列里也要設定提交代碼的郵箱
git config --global user.email [email protected]
然后再進行步驟1

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/3759.html
標籤:其他
上一篇:大廠程式員因厭惡編程,辭去月薪2w+的作業去當司機?
下一篇:如何實作點贊按鈕圖片切換
