使用git pull请求为开源项目做出贡献的工作流程是什么?(例如,通过Github)

德语

我有一个详尽的逐步说明,我想在此分享它,以便开发人员可以从中受益(我会回答我自己的问题)。

德语

由于对开源项目做出的更改必须进行同行评审,因此通常会看到依赖git pull请求的工作流。不允许从直接克隆的存储库中提取请求(您需要自己的fork)。因此,以下是我维护健康分支并定期为开源做出贡献的步骤:

注意:步骤1,步骤2和步骤3仅在一个开发机器上为每个项目完成一次,以设置所有内容。

注意2:如果您要贡献的开源项目未将master用作默认的工作分支,则必须将以下步骤4)和7)的命令中所有对'master'的引用替换为该分支。

1)确保您在本地项目的“分支”上工作,而不是在指向项目源的克隆存储库上工作。为了创建一个Github项目,请访问https://github.com/entity/project,单击“ Fork”,然后为该分支选择一个合适的GitHub帐户。您的个人Github帐户。请注意,您分叉的项目“来源”将不再是原始项目存储库,而是您自己在Github上的分支。如果您要分叉私人项目,请谨慎对待隐私,因为您可能不希望您的分叉公开。

2)将您自己的项目fork克隆到开发计算机中,并将cd克隆到该目录中。

git clone [email protected]:yourgithubuser/project.git

3)将原始项目存储库添加为分支项目中的上游存储库。

git remote add upstream [email protected]:entity/project.git

现在,原始的主项目存储库是“上游”,而不是“原始”

现在出现了工作循环,在您处理分叉的项目时将重复此循环:

4)开始工作之前,请始终确保叉式仓库的主分支与原始项目仓库的主分支同步:

git checkout master
git fetch upstream
git merge upstream/master
git push origin master

5)在项目分支中创建一个新分支,以添加您想要提供的特定修补程序(以错误修正,跟踪器问题,文档部分等命名),然后切换到该分支。

git checkout -b myfixes

这将自动创建分支并切换到该分支。确保分支尚不存在您可能还希望摆脱已经合并到文档中的旧修订分支(否则,项目中将有大量无用的分支)。您可以通过发出a查看本地分支git branch,如果在该列表中找到已经与上游项目合并的分支,则可以执行以下操作:

git branch -D myoldfixes
git push origin --delete myoldfixes

重要说明:如果您已经在另一台计算机上的分支上工作,并且想要在新计算机上继续进行该工作,则需要在新计算机上以及在步骤5中重新执行步骤2、3和4,而不是执行git checkout -b myfixes您应该进行git checkout myfixes(删除-b)。否则,您可能会遇到不好的“分离头”状态(一种匿名分支)

6)在该分支上工作(例如,myfixes)并提交您的更改:

git commit -a -m "My fixes"

(或者,您可以暂存特定文件,而无需使用-a进行提交。您可以根据需要进行多次提交,但不要在分支中保留未提交的更改)

7)在进行修补时,原始上游项目存储库可能已更改(由于其他贡献者在进行处理)。因此,首先,您必须从上游目标分支重新建立当前分支(myfix)。换句话说,您需要在上游repo master分支的最新工作之上重播您的修复程序,以确保您的提交仍与上游的最新提交兼容。这将导致请求请求的快速合并,这就是我们想要的:

git checkout myfixes
git pull --rebase upstream master

注意3:这可能会导致冲突,但这是正常现象,解决问题是过程的一部分(这种情况在非常活跃的项目中经常发生)

注释4:如果分支中有许多提交,并且您是一个体贴的人,则可能希望将提交压缩为一个,以利于原始项目的维护者

8)解决了上一步中的冲突(如果有)后,您已在最新版本的上游主服务器上应用了这些修复程序。由于拉取请求是从您在Github上的分叉存储库发起的,因此您也希望保持同步:

git checkout myfixes
git push origin myfixes -f

9)最后,您可以转到Github https://github.com/entity/project(原始项目不是您的fork),然后单击“ Pull Request”。确保您选择上游仓库“ master”作为目标分支,并选择分支仓库“ myfixes”作为源分支(接受拉取请求后,该分支将自动为您删除)

请享用!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Liquibase和Git的推荐工作流程是什么?

来自分类Dev

使用scssphp的工作流程是什么?

来自分类Dev

将项目基于“种子”仓库的合适的git工作流程是什么?

来自分类Dev

维护派生的git仓库的工作流程是什么?

来自分类Dev

使用Sphinx for Python项目文档时正确的工作流程是什么?

来自分类Dev

Jekyll项目上使用的GH-Pages工作流程是什么?

来自分类Dev

使用自动挂钩进行网站开发时的Git工作流程:Git pull还是git clone?

来自分类Dev

在自托管的git repo上使用git pull请求的工作流

来自分类Dev

使用Github Actions设置工作流程时,哪个分支过滤了`pull_request`事件?

来自分类Dev

Git分叉工作流程,遥控器的名称是什么?

来自分类Dev

考虑到以下场景,Git 中最好的工作流程是什么?

来自分类Dev

使用ClearCase和Git走向理想的工作流程

来自分类Dev

在Visual Studio中使用git子模块的工作流程

来自分类Dev

使用Vagrant和Git将应用程序从开发部署到生产服务器的通用或高效工作流程是什么?

来自分类Dev

克隆的GitHub存储库的GIT工作流程

来自分类Dev

设置git工作流程

来自分类Dev

Git工作流程问题

来自分类Dev

Git / Mercurial工作流程

来自分类Dev

使用多个Grunt任务解析多个文件时正常的工作流程是什么

来自分类Dev

使用Travis CI和Capistrano连续部署到VPS的良好工作流程是什么?

来自分类Dev

使用rebar3编译一个文件的工作流程是什么?

来自分类Dev

使用多个Grunt任务解析多个文件时正常的工作流程是什么

来自分类Dev

使用 Grunt + Git 为 JavaScript 项目构建增量更新的工作流

来自分类Dev

如何(以及为什么)升级GitHub工作流程以使用“环境文件”

来自分类Dev

使用GIT时,应遵循什么工作流程在多台计算机上使用和更新Pimcore实例?

来自分类Dev

Git工作流程:向上游提交拉取请求,并在此期间使用提交

来自分类Dev

我的git rebase工作流程在做什么?

来自分类Dev

github工作流程中github组织机密的使用

来自分类Dev

将更新应用于历史记录中的git补丁时正确的工作流程是什么

Related 相关文章

  1. 1

    使用Liquibase和Git的推荐工作流程是什么?

  2. 2

    使用scssphp的工作流程是什么?

  3. 3

    将项目基于“种子”仓库的合适的git工作流程是什么?

  4. 4

    维护派生的git仓库的工作流程是什么?

  5. 5

    使用Sphinx for Python项目文档时正确的工作流程是什么?

  6. 6

    Jekyll项目上使用的GH-Pages工作流程是什么?

  7. 7

    使用自动挂钩进行网站开发时的Git工作流程:Git pull还是git clone?

  8. 8

    在自托管的git repo上使用git pull请求的工作流

  9. 9

    使用Github Actions设置工作流程时,哪个分支过滤了`pull_request`事件?

  10. 10

    Git分叉工作流程,遥控器的名称是什么?

  11. 11

    考虑到以下场景,Git 中最好的工作流程是什么?

  12. 12

    使用ClearCase和Git走向理想的工作流程

  13. 13

    在Visual Studio中使用git子模块的工作流程

  14. 14

    使用Vagrant和Git将应用程序从开发部署到生产服务器的通用或高效工作流程是什么?

  15. 15

    克隆的GitHub存储库的GIT工作流程

  16. 16

    设置git工作流程

  17. 17

    Git工作流程问题

  18. 18

    Git / Mercurial工作流程

  19. 19

    使用多个Grunt任务解析多个文件时正常的工作流程是什么

  20. 20

    使用Travis CI和Capistrano连续部署到VPS的良好工作流程是什么?

  21. 21

    使用rebar3编译一个文件的工作流程是什么?

  22. 22

    使用多个Grunt任务解析多个文件时正常的工作流程是什么

  23. 23

    使用 Grunt + Git 为 JavaScript 项目构建增量更新的工作流

  24. 24

    如何(以及为什么)升级GitHub工作流程以使用“环境文件”

  25. 25

    使用GIT时,应遵循什么工作流程在多台计算机上使用和更新Pimcore实例?

  26. 26

    Git工作流程:向上游提交拉取请求,并在此期间使用提交

  27. 27

    我的git rebase工作流程在做什么?

  28. 28

    github工作流程中github组织机密的使用

  29. 29

    将更新应用于历史记录中的git补丁时正确的工作流程是什么

热门标签

归档