GitHub 上我們可以 fork 别人的項目,為了與别人産生一種協作關系,将他人的項目在自己本地創建也一個,這裡以霍格沃茲測試學院(Hogwarts)的演練環境做演示:
1.1) 點擊fork按鈕對項目進行fork:
1.2)fork完成後就可以在我們自己的gitHub賬戶下見到被fork的項目:
2.1)接着我們使用git clone命令将fork的項目clone到本地:
這個時候可以将此項目看做是自己的一個項目,可以任意修改;
2.2)項目的作者可以看到有哪些人fork了自己的項目:
3.1) 先在本地修改README.md文件為:
# Hogwarts_Online2
霍格沃茲測試學院定向班第二期演練
try it
3.2)将文件提交到本地倉庫:
這個時候可以看到提交的作者已經變成我們自己了;也可以使用git remote -v命令來查看,可見現在本地倉庫與遠程倉庫直接關聯的是fork之後的項目:
3.3)隻用git push命令将本地倉庫的文件推到遠程倉庫中去:
如下圖可以看到已經成功将修改後的README.md文件推到了GitHub上:
pr:全稱 pull request,當我們修改了 fork 後的項目後,因為不能直接修改别人的項目,這個時候想要将自己的修改與原項目合并,就可以使用 pr 來向原項目作者進行申請
4.1)發起 pr,點擊 New pull request:
然後我們可以看到倉庫路徑從我的倉庫向原作者項目倉庫地址發起 pr 請求,在下面可以看到我對項目的修改 diff:
4.2)這個時候我們點擊Create new pull request按鈕,填寫描述後再點擊Create new pull request按鈕:
這個時候原倉庫維護人員就可以收到pr,并對其進行審核、評論、merge或close的操作:
5.1) 在文件修改沒有沖突(conflict)的時候,可以直接merge:
5.2) 當文件修改有沖突的時候,就需要原作者去進行RResolve了:
5.3) 或者有沖突的pr直接close:總結下來有以下三種情況:
這個時候我們可以增加一個remote,選擇原倉庫的HTTPS地址,使用git remote add <遠端名> <遠端地址>命令來添加一個remote:
7.2)再将遠程端的master分支fetch到本地:
7.3) 這時候使用git merge将當前master分支與遠端分支合并:
結果中我們發現産生了沖突,再使用git status命令查看:
發現兩邊都修改了README.md,這個時候我們使用vi對README.md進行查看,當我們merge的時候,系統會把文件換成以下的展示模式:
這種展示模式的意思是以等号=為分隔符,等号上方為當前分支的修改,等号下方為遠程分支的修改,這樣就産生的沖突,我們可以手動進行修改,然後merge:
7.4) 這個時候刷新GitHub,在我們自己的分支倉庫中可以看到已經成功将修改進行merge:
這個時候如果再進行pr的話,遇見conflict的幾率就會小的多了命令簡單總結:
git remote add other xxxx
git fetch other master
git merge remotes/other/maste
8.1)将項目用IDEA打開,在Version Control → log中可以看到我們的提交管理線:
8.2)雙擊文件可以查看文件diff:
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!