通过 GitHub 提交拉取请求的正确方法(为开源做出贡献时)
Proper way to submit pull request via GitHub (when contributing to open source)
我从 GitHub 分叉并克隆了一个项目,然后从 master 创建了一个分支来进行我的更改。一旦我做出更改并想提交拉取请求,并且想知道什么是最好的方法。
(1) 直接从我的分支向上游仓库提交拉取请求,然后稍后将我的分支与我的仓库中的 master 合并
或
(2) 先在我的仓库中合并我的分支和 master,然后从我的 master 向上游仓库提交拉取请求?
(1) 更好,因为您可以有多个分支 - 每个拉取请求一个分支。而且你不需要将 PR 分支合并到 master(除非你想)。
根据经验,你不应该在 master 分支上开发。尽管从技术上讲可以,但 master 分支通常用于跟踪项目的当前状态。由于您的拉取请求尚未被接受,因此它不反映当前状态,将其合并到您的本地主站只会造成混乱。最佳做法是这样的:
- 分叉项目
- 创建本地功能分支(例如,
git checkout -b myfeature
)
- 在本地开发、测试和验证。
- 将本地功能分支推送到您 GitHub 帐户上的远程分支(例如,
git push origin myfeature
)。
- 创建从您的功能分支 (
yourname/myfeature
) 到主分支 (projectowner/master
) 的拉取请求。
- 接受审查,根据需要修复拉取请求
- 项目维护者合并您的拉取请求
- 使用合并的补丁更新您自己的本地母版(例如,
git fetch upstream && git rebase upstream/master
)。
我从 GitHub 分叉并克隆了一个项目,然后从 master 创建了一个分支来进行我的更改。一旦我做出更改并想提交拉取请求,并且想知道什么是最好的方法。
(1) 直接从我的分支向上游仓库提交拉取请求,然后稍后将我的分支与我的仓库中的 master 合并
或
(2) 先在我的仓库中合并我的分支和 master,然后从我的 master 向上游仓库提交拉取请求?
(1) 更好,因为您可以有多个分支 - 每个拉取请求一个分支。而且你不需要将 PR 分支合并到 master(除非你想)。
根据经验,你不应该在 master 分支上开发。尽管从技术上讲可以,但 master 分支通常用于跟踪项目的当前状态。由于您的拉取请求尚未被接受,因此它不反映当前状态,将其合并到您的本地主站只会造成混乱。最佳做法是这样的:
- 分叉项目
- 创建本地功能分支(例如,
git checkout -b myfeature
) - 在本地开发、测试和验证。
- 将本地功能分支推送到您 GitHub 帐户上的远程分支(例如,
git push origin myfeature
)。 - 创建从您的功能分支 (
yourname/myfeature
) 到主分支 (projectowner/master
) 的拉取请求。 - 接受审查,根据需要修复拉取请求
- 项目维护者合并您的拉取请求
- 使用合并的补丁更新您自己的本地母版(例如,
git fetch upstream && git rebase upstream/master
)。