我应该在为apachekafka创建pr时创建fork的分支吗?

piah890a  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(368)

这个问题在这里已经有答案了

git和github的最佳工作流(5个答案)
两年前关门了。
我计划为Kafka开源做贡献。我把Kafka转入我的git hub账户。然后我在本地克隆了它。现在,我应该在master中进行更改,还是应该在本地创建一个以ticket命名的分支?

ct3nt3jp

ct3nt3jp1#

创建一个分支来实现特性或错误修复,将您的分支推送到您自己的存储库(您的fork),然后打开一个pull请求来合并fork中的分支和主分支(通常是 master )在Kafka的官方资料库里。
以下是在github上参与项目时标准工作流的更详细说明:
github标准fork&pull请求工作flowhttps://gist.github.com/augustoproiete/256b560d008d39afc0814a19f41a1d49
无论您是想回馈开放源码社区还是在自己的项目上进行协作,了解如何正确地分叉和生成请求都是必不可少的。不幸的是,当你开始学习这个过程的时候,很容易犯错误或者不知道你应该做什么。我知道我在使用它的初期确实遇到了相当大的麻烦,我发现github和互联网上的许多信息都是零碎和不完整的——这里描述的过程的一部分,那里描述的另一部分,在不同地方常见的挂断,等等。
为了给我自己和其他人整合这些信息,我发现这个简短的教程是创建fork、执行工作、发出pull请求以及将pull请求合并回原始项目的相当标准的过程。

创建叉子

只需转到github页面并单击“fork”按钮。就这么简单。完成后,您可以使用最喜爱的git客户端克隆您的回购,或者直接进入命令行:


# Clone your fork to your local machine

git clone git@github.com:USERNAME/FORKED-PROJECT.git

保持你的叉子是最新的

虽然这并不是绝对必要的一步,但如果你计划做的不仅仅是一个小小的快速修复,你会希望通过跟踪你最初的“上游”回购来确保你的分支是最新的。为此,您需要添加一个遥控器:


# 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

每当您想用最新的上游更改更新fork时,您都需要首先获取上游repo的分支和最新提交,以便将它们带到存储库中:


# Fetch from upstream remote

git fetch upstream

# View all branches, including those from upstream

git branch -va

现在, checkout 您自己的主分支并合并上游回购的主分支:


# Checkout your master branch and merge upstream

git checkout master
git merge upstream/master

如果本地主分支上没有唯一的提交,git将只执行快进。但是,如果您一直在对master进行更改(在绝大多数情况下,您可能不应该这样做),请参阅下一节,您可能需要处理冲突。在这样做时,要注意尊重上游所做的更改。
现在,您的本地主分支已经更新了所有上游修改的内容。

做你的工作

创建分支

无论何时开始处理新特性或错误修复,创建新分支都很重要。它不仅是正确的git工作流,而且还使您的更改保持有序,并与主分支分离,这样您就可以轻松地为完成的每个任务提交和管理多个pull请求。
要创建新分支并开始使用它,请执行以下操作:


# 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

现在,去镇上黑客和作出任何改变你想。

提交拉取请求

清理你的工作

在提交pull请求之前,您可能需要做一些事情来清理您的分支,并使原始repo的维护人员能够尽可能简单地测试、接受和合并您的工作。
如果对上游主分支进行了任何提交,您应该重新设置开发分支的基础,这样合并它将是一个简单的快速过程,不需要任何冲突解决工作。


# 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

现在,可能需要将一些较小的提交压缩为一小部分更大、更具内聚性的提交。您可以使用交互式重新基准来实现这一点:


# Rebase all commits on your development branch

git checkout 
git rebase -i master

这将打开一个文本编辑器,您可以在其中指定要挤压的提交。

提交

提交并将所有更改推送到github之后,转到github上的fork页面,选择开发分支,然后单击pull request按钮。如果您需要对pull请求进行任何调整,只需将更新推送到github。拉取请求将自动跟踪开发分支上的更改并进行更新。

接受并合并请求

请注意,与前面从创建fork并生成pull请求的人的Angular 编写的部分不同,本部分是从处理传入pull请求的原始存储库所有者的Angular 编写的。因此,“forker”将原始存储库称为 upstream ,我们现在将其视为原始存储库和标准的所有者 origin 遥控器。

checkout 和测试拉取请求

打开门 .git/config 文件并在下面添加新行 [remote "origin"] :

fetch = +refs/pull/*/head:refs/pull/origin/*

现在,您可以获取并 checkout 任何pull请求,以便测试它们:


# Fetch all pull request branches

git fetch origin

# Checkout out a given pull request branch based on its number

git checkout -b 999 pull/origin/999

请记住,这些分支将是只读的,您将无法推动任何更改。

自动合并请求

如果合并是简单的快进,只需单击github上pull请求页面上的按钮,就可以自动进行合并。

手动合并请求

要手动执行合并,您需要 checkout 源repo中的目标分支,直接从fork中提取,然后合并并推送。


# 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

现在您已经完成了开发分支,您可以自由地删除它。

git branch -d newfeature

版权
版权所有2017,chase pettit
麻省理工学院执照,http://www.opensource.org/licenses/mit-license.php
附加读数
atlassian-合并与重新调整
来源
github-分叉回购
github-同步fork
github- checkout pull请求

相关问题