# Add 'upstream' repo to list of remotes
git remote add upstream https://github.com/UPSTREAM-USER/ORIGINAL-PROJECT.git
# Verify the new remote named 'upstream'
git remote -v
# Checkout the master branch - you want your new branch to come from master
git checkout master
# Create a new branch named newfeature (give your branch its own simple informative name)
git branch newfeature
# Switch to your new branch
git checkout newfeature
# Fetch upstream master and merge with your repo's master branch
git fetch upstream
git checkout master
git merge upstream/master
# If there were any new commits, rebase your development branch
git checkout newfeature
git rebase master
# Checkout the branch you're merging to in the target repo
git checkout master
# Pull the development branch from the fork repo where the pull request development was done.
git pull https://github.com/forkuser/forkedrepo.git newfeature
# Merge the development branch
git merge newfeature
# Push master with the new feature merged into it
git push origin master
1条答案
按热度按时间ct3nt3jp1#
创建一个分支来实现特性或错误修复,将您的分支推送到您自己的存储库(您的fork),然后打开一个pull请求来合并fork中的分支和主分支(通常是
master
)在Kafka的官方资料库里。以下是在github上参与项目时标准工作流的更详细说明:
github标准fork&pull请求工作flowhttps://gist.github.com/augustoproiete/256b560d008d39afc0814a19f41a1d49
无论您是想回馈开放源码社区还是在自己的项目上进行协作,了解如何正确地分叉和生成请求都是必不可少的。不幸的是,当你开始学习这个过程的时候,很容易犯错误或者不知道你应该做什么。我知道我在使用它的初期确实遇到了相当大的麻烦,我发现github和互联网上的许多信息都是零碎和不完整的——这里描述的过程的一部分,那里描述的另一部分,在不同地方常见的挂断,等等。
为了给我自己和其他人整合这些信息,我发现这个简短的教程是创建fork、执行工作、发出pull请求以及将pull请求合并回原始项目的相当标准的过程。
创建叉子
只需转到github页面并单击“fork”按钮。就这么简单。完成后,您可以使用最喜爱的git客户端克隆您的回购,或者直接进入命令行:
保持你的叉子是最新的
虽然这并不是绝对必要的一步,但如果你计划做的不仅仅是一个小小的快速修复,你会希望通过跟踪你最初的“上游”回购来确保你的分支是最新的。为此,您需要添加一个遥控器:
每当您想用最新的上游更改更新fork时,您都需要首先获取上游repo的分支和最新提交,以便将它们带到存储库中:
现在, checkout 您自己的主分支并合并上游回购的主分支:
如果本地主分支上没有唯一的提交,git将只执行快进。但是,如果您一直在对master进行更改(在绝大多数情况下,您可能不应该这样做),请参阅下一节,您可能需要处理冲突。在这样做时,要注意尊重上游所做的更改。
现在,您的本地主分支已经更新了所有上游修改的内容。
做你的工作
创建分支
无论何时开始处理新特性或错误修复,创建新分支都很重要。它不仅是正确的git工作流,而且还使您的更改保持有序,并与主分支分离,这样您就可以轻松地为完成的每个任务提交和管理多个pull请求。
要创建新分支并开始使用它,请执行以下操作:
现在,去镇上黑客和作出任何改变你想。
提交拉取请求
清理你的工作
在提交pull请求之前,您可能需要做一些事情来清理您的分支,并使原始repo的维护人员能够尽可能简单地测试、接受和合并您的工作。
如果对上游主分支进行了任何提交,您应该重新设置开发分支的基础,这样合并它将是一个简单的快速过程,不需要任何冲突解决工作。
现在,可能需要将一些较小的提交压缩为一小部分更大、更具内聚性的提交。您可以使用交互式重新基准来实现这一点:
这将打开一个文本编辑器,您可以在其中指定要挤压的提交。
提交
提交并将所有更改推送到github之后,转到github上的fork页面,选择开发分支,然后单击pull request按钮。如果您需要对pull请求进行任何调整,只需将更新推送到github。拉取请求将自动跟踪开发分支上的更改并进行更新。
接受并合并请求
请注意,与前面从创建fork并生成pull请求的人的Angular 编写的部分不同,本部分是从处理传入pull请求的原始存储库所有者的Angular 编写的。因此,“forker”将原始存储库称为
upstream
,我们现在将其视为原始存储库和标准的所有者origin
遥控器。checkout 和测试拉取请求
打开门
.git/config
文件并在下面添加新行[remote "origin"]
:现在,您可以获取并 checkout 任何pull请求,以便测试它们:
请记住,这些分支将是只读的,您将无法推动任何更改。
自动合并请求
如果合并是简单的快进,只需单击github上pull请求页面上的按钮,就可以自动进行合并。
手动合并请求
要手动执行合并,您需要 checkout 源repo中的目标分支,直接从fork中提取,然后合并并推送。
现在您已经完成了开发分支,您可以自由地删除它。
版权
版权所有2017,chase pettit
麻省理工学院执照,http://www.opensource.org/licenses/mit-license.php
附加读数
atlassian-合并与重新调整
来源
github-分叉回购
github-同步fork
github- checkout pull请求