[英]What is the workflow for contributing to an open source git repository?
我不得不承認我從來沒有為開源項目做出過貢獻,因為我不了解工作流程。 我已經多次查看 git 文檔,但發現它太難了。
我已經使用 Team Foundation Server (TFS) 或 Visual Studio Team Services(以前是 Visual Studio Online)等前端為 git 存儲庫向我的客戶端的私有存儲庫發出拉取請求。 我還可以使用 git 命令行輕松地單獨處理 git 存儲庫,因為該工作流程很簡單。 但我想學習使用其命令行的 git 工作流程來為開源項目做出貢獻。
我從 github 文檔中閱讀了以下文章。 我想我有點了解工作流程,但我不確定,我害怕在其他人的項目中嘗試它。
我真正需要的是有人用幾個易於理解的要點來簡化步驟。
從我到目前為止的研究來看,這就是我的理解。
假設我們想為一個名為Boo Boo的虛構項目做出貢獻,該項目的所有者名為Baabaa 。 讓我們假設我,這個想為Boo Boo做貢獻的人,在https://www.github.com/Water-Cooler-v2/有一個 github 帳戶
以下是我知道工作流程的步驟。 經過這些步驟,我完全不知道該怎么辦。
首先,我將Boo Boo從https://www.github.com/Baabaa/Boo-Boo分叉到我自己的 github 帳戶中。 現在,我在https://www.github.com/Water-Cooler-v2/Boo-Boo有自己的Boo Boo叉。
然后,我將自己的Boo Boo克隆到我計算機上的一個文件夾中,如下所示:
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/ $ git clone https://www.github.com/Water-Cooler-v2/Boo-Boo.git
這將我在文件夾MyFolder/Boo-Boo中的存儲庫的本地副本與指向我自己的分支的remote
命名origin
,即在https://www.github.com/Water-Cooler-v2/Boo-Boo。混帳
然后,我還將 Myfolder/Boo-Boo 中的本地存儲庫與Baabaa的遠程存儲庫鏈接起來。 我通過復制Baabaa存儲庫的 url 並鍵入:
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git remote add upstream https://www.github.com/Baabaa/Boo-Boo.git
接下來,我驗證名為upstream
的新遠程已鏈接到:
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git remote --v
接下來,我通過鍵入以下命令將遠程upstream
所有分支提取到我計算機中的本地存儲庫中:
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git fetch upstream/master
現在,我檢出我的本地master
分支,默認情況下無論如何都會檢出它,但無論如何我都會檢出它以確保:
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git checkout master
然后,我將對本地存儲庫中的文件進行一些更改。 在這種情況下,我將編輯一個現有文件(下面未顯示,因為它不使用任何 git 命令),然后我將添加一個名為 MyNewFile.txt 的新文件。
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ touch MyNewFile.txt
現在,我將upstream/master
分支合並到我自己的master
分支中。
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git merge upstream/master
然后,現在是我不太清楚的步驟。 我推嗎? 去哪里? 我自己的 fork(遠程origin master
)還是Baabaa的Boo-Boo (遠程upstream master
)?
或者,我是否創建拉取請求?
您能否驗證上面列出的前 8 個步驟的工作流程,然后完成它?
您的工作流程是正確的。
始終在您的 fork 上創建自己的分支並將其推送到origin
。 創建分支有助於維護人員在審查您的分支時。
推送更改后,轉到原始存儲庫,頁面頂部應該有一個按鈕提示您創建拉取請求。
通常,為開源項目做出貢獻最具挑戰性的部分是找到從哪里開始。 為了幫助解決這個問題,有兩個站點可以幫助查找具有良好跳轉問題的項目。
您只需 fork 存儲庫,將其克隆到本地計算機,可選擇創建一個分支並進行更改。 您在本地或在您自己的倉庫中如何工作實際上並不重要。 您不必使用 GitFlow。 您可以進行基於 Trunk 的開發或任何適合您的開發。 完成后,將其推送到您自己的倉庫。 然后轉到 GitHub 並針對原始存儲庫打開 PR。 這里的所有都是它的。
關於將原始存儲庫添加為遠程:將原始存儲庫添加為遠程存儲庫的主要原因是當您打算使用原始存儲庫的更改(合並、重新定位、挑選等)更新您的分支時。 如果你只是想對原作一次性做出貢獻,比如修復一些錯誤,通常不需要遙控器。 不過,為長期貢獻添加它是有意義的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.