贡献给开源git存储库的工作流程是什么?

时间:2016-10-01 09:40:40

标签: git github tfs azure-devops

我不得不承认我从未参与过开源项目,因为我不了解工作流程。我在git文档中多次浏览过但发现它太难了。

我已经使用Team Foundation Server(TFS)或Visual Studio Team Services(Visual Studio Online)等前端为git存储库向我的客户端提供了对私有存储库的pull请求。我也可以使用git命令行轻松地在git存储库上工作,因为该工作流很简单。但我想学习git工作流程,使用其命令行为开源项目做贡献。

我从github文档中读到了以下文章。我想我有点了解工作流程,但我不确定,我很害怕在别人的项目上试一试。

  1. Fork a Repo
  2. Syncing a fork
  3. About pull requests
  4. About collaborative development models
  5. Creating a pull request from a fork
  6. Creating a pull request
  7. 我真正需要的是有人通过一些易于理解的要点来简化步骤。

    到目前为止,根据我的研究,这是我理解的。

    让我们假设我们想要为名为 Boo Boo 的虚构项目做出贡献,该项目的所有者名为 Baabaa 。让我们假设我,想要为 Boo Boo 做出贡献的人,在https://www.github.com/Water-Cooler-v2/

    拥有github帐户

    以下是我知道工作流程的步骤。完成这些步骤后,我不知道该怎么做。

    1. 首先,我将https://www.github.com/Baabaa/Boo-Boo中的 Boo Boo 分叉到我自己的github帐户中。现在,我在https://www.github.com/Water-Cooler-v2/Boo-Boo拥有自己的 Boo Boo 分叉。

    2. 然后,我将自己的 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,即{{} 3}}

    3. 然后,我将 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

    4. 接下来,我验证名为upstream的新远程已链接到:

      MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git remote --v

    5. 接下来,我通过输入以下内容将远程upstream中的所有分支提取到计算机的本地存储库中:

      MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git fetch upstream/master

    6. 现在,我会检查我的本地master分支,默认情况下会将其检出,但无论如何我都会检查出来以确定:

      MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git checkout master

    7. 然后,我将对本地存储库中的文件进行一些更改。在这种情况下,我将编辑一个现有文件(下面没有显示,因为它不使用任何git命令),我将添加一个名为MyNewFile.txt的新文件。

      MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ touch MyNewFile.txt

    8. 现在,我将upstream/master分支合并到我自己的master分支中。

      MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo $ git merge upstream/master

    9. 然后,现在是我不太清楚的步骤。我推吗?去哪里?我自己的叉子(远程origin master)或 Baabaa Boo-Boo (远程upstream master)?

      或者,我是否创建拉取请求?

      您能否验证上面列出的前8个步骤的工作流程,然后完成它?

2 个答案:

答案 0 :(得分:3)

您的工作流程正确无误。

  • 始终在您的分支上创建自己的分支并将其推送到origin。在审查您的分支时,创建分支有助于维护者。

  • 推送更改后,转到原始仓库,页面顶部应该有一个按钮,提示您创建拉取请求。

通常,为开源项目做出贡献最具挑战性的部分是找到从哪里开始。为了解决这个问题,有两个站点可以帮助找到跳转问题很好的项目。

http://up-for-grabs.net/#/
https://yourfirstpr.github.io/

答案 1 :(得分:2)

您只需将repo分叉,将其克隆到本地计算机,可选择创建分支并进行更改。在本地或在您自己的回购中工作的方式并不重要。你不必使用GitFlow。您可以进行基于Trunk的开发或任何适合您的开发。完成后,将其推送到您自己的仓库。然后去GitHub并打开原始仓库的公关。这就是它的全部内容。

关于将原始作为远程添加:将原始仓库添加为远程的主要原因是当您打算使用原始仓库(合并,变基,挑选等)的更改来更新您的分支。如果你只是打算对原版进行一次性贡献,比如修复一些bug,通常没有必要使用遥控器。将它添加为长期贡献是有道理的。