我必须承认我从未为开源项目做出过贡献,因为我不理解工作流程。我多次查看git文档,但发现它太难了。
我曾经使用像Team Foundation Server (TFS)或者Visual Studio Team Services (曾经的Visual Studio Online)这样的前端,向私有仓库提交pull requests给我的客户。我也可以轻松地使用git命令行在git仓库中单独工作,因为这个工作流程很简单。但我想学习使用git命令行工作流程为开源项目做出贡献。
我阅读了github文档中的以下文章。我想我大致了解了工作流程,但我不确定,而且我害怕在别人的项目上试用它。
我真正需要的是有人把步骤简化成几个易于理解的要点。
从目前我的研究来看,这就是我所了解到的。
让我们假设我们想为一个名为Boo Boo的虚构项目做出贡献,其所有者名为Baabaa。让我们假设我,即想要为 Boo Boo 做出贡献的人,拥有Github账户,链接如下 https://www.github.com/Water-Cooler-v2/
以下是我知道工作流程的步骤。在这些步骤之后,我不太清楚该怎么做。
首先,我将 Boo Boo 从 https://www.github.com/Baabaa/Boo-Boo fork 到了我的 Github 账户中。现在,我在 https://www.github.com/Water-Cooler-v2/Boo-Boo 上拥有自己的 Boo Boo fork。
接下来,我将我的 Boo Boo 克隆到电脑上的一个文件夹中:
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/ $ git clone https://www.github.com/Water-Cooler-v2/Boo-Boo.git
这样就将我本地文件夹中的代码库链接到了名为
origin
的远程仓库,它指向了我的 fork,即 https://www.github.com/Water-Cooler-v2/Boo-Boo.git然后,我还要将我的本地仓库(位于 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
现在,我要 checkout 我本地的
master
分支(默认情况下会自动 checkout),但我还是要执行一下这个命令,以确保它被 checkout 了: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
然后,现在我不是很清楚的步骤是什么。 我要推送吗? 推到哪里? 我自己的分支(远程origin master
)还是Baabaa的Boo-Boo(远程upstream master
)?
或者,我要创建一个拉取请求吗?
请您验证上述前8个步骤的工作流程,然后完成它吗?