gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:10:15 26 4
gpt4 key购买 nike

我对我如何做到这一点有一个全面的分步描述,我想在这里分享它,以便开发人员可以从中受益(我将回答我自己的问题)。

最佳答案

由于对开源项目做出的更改必须经过同行评审,因此通常会看到依赖于 git pull 请求的工作流。不允许来自直接克隆的 repos 的 pull 请求(您需要自己的 fork)。所以这些是我遵循的步骤来维护一个健康的 fork 并定期为开源做出贡献:
注意:步骤 1、2 和 3 在单个开发机器上的每个项目仅执行一次以设置所有内容。
注 2:如果您将参与的开源项目不使用 master 作为默认工作分支,您必须将下面步骤 4) 和 7) 的命令中对“master”的所有引用替换为那个分支。
1) 确保您在本地处理项目的“分支”,而不是在指向项目作为源的克隆存储库上工作。为了 fork 一个 Github 项目去 https://github.com/entity/project ,点击“Fork”并为fork选择一个合适的GitHub账户,例如。您的个人 Github 帐户。请注意,您的 fork 项目“起源”将不再是原始项目存储库,而是您自己在 Github 上的 fork 。如果您要 fork 私有(private)项目,请注意隐私,因为您可能不希望您的 fork 公开。
2) 将您自己的项目 fork 克隆到您的开发机器中,然后 cd 进入该目录。

git clone git@github.com:yourgithubuser/project.git
3) 在您的 fork 项目中添加原始项目存储库作为上游存储库。
git remote add upstream git@github.com:entity/project.git
原来的主项目 repo 现在是“上游”而不是“起源”
现在是在处理 fork 项目时将重复的工作循环:
4) 在开始工作之前,请务必确保 fork 仓库的 master 分支与原始项目仓库的 master 分支同步:
git checkout master
git fetch upstream
git merge upstream/master
git push origin master
5) 在您的项目分支中为您想要贡献的特定修复创建一个新分支(以错误修复、跟踪器问题、文档部分等命名)并切换到它。
git checkout -b myfixes
这会自动创建分支并切换到它。 确保分支不存在 .您可能还想删除已经 merge 到文档中的旧修复分支(否则您的项目中将有大量无用的分支)。您可以通过发出 git branch 来查看您本地的分支机构。如果在该列表中您找到一个已经与上游项目 merge 的分支,那么您可以执行以下操作:
git branch -D myoldfixes
git push origin --delete myoldfixes
重要提示 : 如果您已经在另一台机器上的分支上工作,并希望在新机器上继续该工作,您需要在新机器上重做第 2、3 和 4 步,而不是在第 5 步中执行 git checkout -b myfixes 你应该做 git checkout myfixes (删除-b)。否则你最终会得到一个不好的“分离头”状态(一种匿名分支)
6) 在该分支上工作(例如 myfixes)并提交您的更改:
git commit -a -m "My fixes"
(或者,您可以暂存特定文件并在不使用 -a 的情况下提交。您可以根据需要多次提交,但不要在分支中留下未提交的更改)
7) 当你在修复你的时候,原始的上游项目 repo 可能已经改变了(由于其他贡献者正在处理它)。因此,首先您必须从上游目标分支重新设置当前分支 (myfixes) 的基础。换句话说,您需要在上游 repo master 分支的最新工作之上重放您的修复程序,以确保您的提交仍然与上游的最新提交兼容。这将导致 pull 请求的快进 merge ,这正是我们想要的:
git checkout myfixes
git pull --rebase upstream master
注释 3 :这可能会导致冲突,但这是正常的,修复它们是过程的一部分(这种情况在非常活跃的项目中更常见)
注释 4 :如果你在分支中有很多提交并且你是一个体贴的人,你可能想要 squash your commits into a single one为了原始项目的维护者的利益
8) 在修复上一步的冲突(如果有)之后,您已经在最新版本的上游主服务器上应用了您的修复。由于 pull 请求是从您在 Github 上的 fork 存储库发起的,因此您也希望保持同步:
git checkout myfixes
git push origin myfixes -f
9) 最后可以去Github https://github.com/entity/project (原始项目不是您的 fork )并单击“pull 请求”。确保你选择上游仓库“master”作为目标分支,你的分支仓库“myfixes”作为源分支(在 pull 请求被接受后,分支会自动为你删除)
享受!

关于git - 使用 git pull request 为开源项目做出贡献的工作流程是什么? (例如,通过 Github),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20956154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com