目錄
- 一、做點貢獻
- 1. Fork該倉庫
- 2. Clone代碼并修改
- 3. 提交修改到自己的倉庫
- 4. 提交pull requests
- 5. 源倉庫審核pull requests
- 二、Fork過來的倉庫如何更新
- 三、 如何獲取并更新指定Tag
- 1. 如何Clone指定的標簽
- 2. 我要添加注釋
- 3. 代碼如何更新版本
- 3.1 一次失敗的嘗試
- 3.2 通過upstream獲取更新合并
一、做點貢獻
想對別人的某個倉庫“做點貢獻”怎么辦?
1. Fork該倉庫
首先Fork該倉庫,本文以git-learn這個倉庫為例

這樣自己的賬號下就會出現這樣一個倉庫

2. Clone代碼并修改
然后把這個倉庫clone下來
git clone https://github.com/FlyLolo/git-learn.git
我新建了一個Student類

3. 提交修改到自己的倉庫
然后將修改提交
git add .
git commit -m 'add student'
git push origin master
這樣會將修改提交到自己賬號下的git-learn倉庫
那么如何將修改提交到源倉庫呢?
4. 提交pull requests
如果想將修改提交到源倉庫,需要進行pull requests

點擊上圖的pull requests按鈕,可以看到自動做了配置

圖中紅框部分顯示了提交修改的方向,即從自己賬號倉庫的main分支提交到源倉庫的main分支,
點擊create pull request按鈕:

點擊下面的按鈕提交就可,
5. 源倉庫審核pull requests
此時源倉庫的作者在源倉庫的pull requests頁面就會看到如下的Merge pull請求

可以對該請求做相應的處理

比如點擊Merge pull request同意將修改合并,
二、Fork過來的倉庫如何更新
當一個倉庫被Fork過來之后,它是不會隨著源倉庫更新的,那么如果想同步源倉庫的更新過來如何操作呢?
還是pull requests,

默認是向原倉庫提交修改請求
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-q1L0ByGC-1654552184213)(git-tag-update.assets/image-20220602094759603.png)]
我們現在不一樣,想用原倉庫更新fork過來的倉庫
首先修改左側的,改成自己的倉庫

此時會變成這樣

點擊圖中的藍字“ compare across forks”,可以看到箭頭兩邊都是自己的倉庫

更改右側的倉庫,最終結果如下圖

已經找到了更新,點擊右上角的create pull request 按鈕

更新即可,這樣就完成了main分支的更新,
三、 如何獲取并更新指定Tag
看一下如何通過Fork方式滿足的我原始碼閱讀需求,
首先我想閱讀的是指定版本的原始碼,例如tomcat的10.0.21版本,這需要我去clone它的tag 10.0.21,這樣才能保證版本一致,
1. 如何Clone指定的標簽
這里我指定了標簽 v1.0
git clone -b v1.0 https://github.com/FlyLolo/git-learn.git

切換到對應的檔案夾
cd git-learn
2. 我要添加注釋
我想對部分代碼進行注釋,并提交到自己的倉庫,(源倉庫估計不會接收這樣的修改請求,自己看就行了)
修改一個檔案,例如添加了一個注釋

準備提交修改

提示detached HEAD
如果是在IDEA中也會提示失敗
其實clone的時候已經有提示,見第一幅圖的紅框提示,需創建并切換到一個新的分支,我將其命名為tag-v1.0
git switch -c tag-v1.0
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aIHXykxD-1654552184220)(git-tag-update.assets/image-20220602071921679.png)]
push的時候如果未指定分支會有如下提示:

按提示操作:

提交成功,網頁查看一下,已經有了新建的分支:

3. 代碼如何更新版本
如果此時源倉庫更新了v2.0甚至v3.0版本,而我這里還是v1.0的代碼怎么辦?
3.1 一次失敗的嘗試
首先,我想到了第二節的反向pull request, 機智如我

做了如上圖配置,右側選擇了源倉庫的tag v3.0 ,如愿的識別出了差異,但此時才發現原來的create pullrequest按鈕沒有了,嘗試失敗,
3.2 通過upstream獲取更新合并
查看現有的remote地址
git remote -v
添加源倉庫地址到upstream
git remote add upstream https://github.com/Test-2022/git-learn.git
再次查看remote地址串列
git remote -v

獲取upstream的資料
git fetch upstream

可以看到獲取到了源倉庫的各個分支和tag,
也可以獲取指定的tag
git fetch upstream tag v3.0
合并分支
git merge v3.0

如果像這樣出現合并沖突,自行解決沖突即可,
☆☆☆ 共同學習,歡迎拍磚;轉載請注明出處,謝謝,歡迎關注我的公眾號:閑聊編程,☆☆☆
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/499763.html
標籤:其他
上一篇:Postman進階功能
下一篇:歸并排序及優化
