Github 将上游更改合并到现有 PR
Github merge upstream changes to existing PR
我有一个拉取请求,我需要在其中进行一些修复。与此同时,master 提前进行了许多提交,我需要在提交修复之前用它们更新我的 PR。
如果我首先从本地检查的 master 进行变基,然后强制推送我的 PR 分支,PR 是否也会包含合并的更改?
我只想更新 PR,其中只包含我的更改,就像之前我被要求 "somehow" 清理我的 PR 的类似情况一样。这怎么可能?
如果你在当前的上游 master 之上重新构建你的工作,然后进行强制推送,新的 PR 分支将取代旧的。所以旧的提交从 PR 中消失,新的提交在那里,准备合并。
If I do a rebase first from my locally checked master and then do a forced push of my PR branch, will the PR also contain the changes from the merge?
如果你 rebase 到你的 "locally checked master" 并推送,PR 将只与你本地版本的 master 保持同步。
你可以检出 master 并从你的源拉取更改,然后变基到那个,或者在 git fetch
之后变基到 origin/master
,然后你将有一个只包含新提交的分支(新分支历史中包含的更改)。
I just want to have an updated PR which only contains my changes as in a similar situaltion previously I was asked to "somehow" clean up my PR. How is that possible?
您有两个选择 - rebase
and merge
- 您应该查看每个选项的文档,但这里是每个选项的快速比较:
- Rebase: 将回退你的分支,将其重置为你 rebase 到的任何内容,然后再次重新应用你的更改。这意味着当您的分支不是最新的时,变基将在您的更改之前应用来自原点的新更改。您在 rebase 开始时解决任何合并冲突(可能在 your 提交中返回历史记录),并且在重新播放历史记录时需要时。
- 优点: 清理提交历史
- 缺点:你将不得不强制推送,很多人不喜欢这样做。当你变基时,提交哈希值会改变。
- 合并: 将在您的更改之上 应用来自原始 的新更改。这意味着您的更改将存在于历史记录中,然后新的更改将领先于它。您只需在提交历史记录的 end 处解决一次冲突(通常更容易)。
- 缺点: 并且提交哈希不会改变。
- 优点:不需要强制推动。
一般来说,如果 GitHub 上的某人要求您更新您的分支,那么他们可能会建议您变基,这样就提交历史而言它会保持更干净。
将您的提交合并在一起也是 GitHub 上存储库所有者的常见请求。这只有通过变基才能实现,但是 GitHub now offers the ability to squash commits when merging pull requests,因此许多存储库所有者不会费心要求您压缩,因为他们现在可以自己完成。
Here's a good comparison Atlassian 的每个方法。
我有一个拉取请求,我需要在其中进行一些修复。与此同时,master 提前进行了许多提交,我需要在提交修复之前用它们更新我的 PR。 如果我首先从本地检查的 master 进行变基,然后强制推送我的 PR 分支,PR 是否也会包含合并的更改?
我只想更新 PR,其中只包含我的更改,就像之前我被要求 "somehow" 清理我的 PR 的类似情况一样。这怎么可能?
如果你在当前的上游 master 之上重新构建你的工作,然后进行强制推送,新的 PR 分支将取代旧的。所以旧的提交从 PR 中消失,新的提交在那里,准备合并。
If I do a rebase first from my locally checked master and then do a forced push of my PR branch, will the PR also contain the changes from the merge?
如果你 rebase 到你的 "locally checked master" 并推送,PR 将只与你本地版本的 master 保持同步。
你可以检出 master 并从你的源拉取更改,然后变基到那个,或者在 git fetch
之后变基到 origin/master
,然后你将有一个只包含新提交的分支(新分支历史中包含的更改)。
I just want to have an updated PR which only contains my changes as in a similar situaltion previously I was asked to "somehow" clean up my PR. How is that possible?
您有两个选择 - rebase
and merge
- 您应该查看每个选项的文档,但这里是每个选项的快速比较:
- Rebase: 将回退你的分支,将其重置为你 rebase 到的任何内容,然后再次重新应用你的更改。这意味着当您的分支不是最新的时,变基将在您的更改之前应用来自原点的新更改。您在 rebase 开始时解决任何合并冲突(可能在 your 提交中返回历史记录),并且在重新播放历史记录时需要时。
- 优点: 清理提交历史
- 缺点:你将不得不强制推送,很多人不喜欢这样做。当你变基时,提交哈希值会改变。
- 合并: 将在您的更改之上 应用来自原始 的新更改。这意味着您的更改将存在于历史记录中,然后新的更改将领先于它。您只需在提交历史记录的 end 处解决一次冲突(通常更容易)。
- 缺点: 并且提交哈希不会改变。
- 优点:不需要强制推动。
一般来说,如果 GitHub 上的某人要求您更新您的分支,那么他们可能会建议您变基,这样就提交历史而言它会保持更干净。
将您的提交合并在一起也是 GitHub 上存储库所有者的常见请求。这只有通过变基才能实现,但是 GitHub now offers the ability to squash commits when merging pull requests,因此许多存储库所有者不会费心要求您压缩,因为他们现在可以自己完成。
Here's a good comparison Atlassian 的每个方法。