在变基之前将所有提交合并为一个
Combine all commits into one before rebase
我有一个我正在处理的本地/远程分支A。 BranchA 是从 develop 分支创建的。我已经在某个地方做出了十几个承诺。现在我正处于一个阶段,我想从同时进行的开发中提取所有更改,以便 BranchA 包含开发中的所有最新更改,因此我可以对其进行测试。
我试过将开发变基到BranchA,但是解决冲突有点困难。发生的事情是在 developer 分支中更改了一个 FileA,但我也在我的很多提交中更改了这个文件(比方说 8)。所以似乎 git 要求我解决此文件的冲突 8 次,而我希望它只询问我最新版本。
那么,我在这里有哪些选择?我应该将所有 12 次提交合并为 1 次,然后尝试变基吗?我该如何正确地做到这一点?
我不确定这里最好的行动方案是什么(通常这是相当 preference/policy 驱动的),但是如果你想做一个变基并将所有提交压缩成一个,你可以做:
git checkout develop
git rebase -i BranchA
这将打开一个编辑器,其中在 develop
上的每个提交都有一行,但在 BranchA
.
中不存在
此编辑器中的说明概述了您可以执行的操作,但在这种情况下您可以:
- 将最顶层(第一个)提交操作保留为
pick
- 将所有其他提交操作更改为
squash
或 fixup
squash
和 fixup
之间的区别在于,squash 会将压缩提交的所有提交消息连接在一起,并允许您编辑此提交消息,而 fixup
只会使用其他人 "fixed-up" 提交的提交消息,不允许您对其进行编辑。
我的偏好通常是使用 squash
来至少保留一些类似的提交历史记录,但这完全取决于我的分支到那时为止的完善程度。
I have tried to rebase develop onto BranchA
否:您需要将您的分支重新定位到公共分支 develop
git checkout BranchA
git rebase develop
如果多次出现类似的合并冲突,git rerere
can help。
另一种方法是简单地将 develop
合并到 BranchA
。
The point is that I want to add the change in FileA from new develop commit, to latest version for FileA from my BranchA.
对于给定的文件,一旦 rebase 被冲突阻止,您可以简单地检出它:
git checkout develop -- FileA
git rebase --continue
这样,解决的速度非常快(因为您用 develop
分支中的文件覆盖了 FileA)
我有一个我正在处理的本地/远程分支A。 BranchA 是从 develop 分支创建的。我已经在某个地方做出了十几个承诺。现在我正处于一个阶段,我想从同时进行的开发中提取所有更改,以便 BranchA 包含开发中的所有最新更改,因此我可以对其进行测试。
我试过将开发变基到BranchA,但是解决冲突有点困难。发生的事情是在 developer 分支中更改了一个 FileA,但我也在我的很多提交中更改了这个文件(比方说 8)。所以似乎 git 要求我解决此文件的冲突 8 次,而我希望它只询问我最新版本。
那么,我在这里有哪些选择?我应该将所有 12 次提交合并为 1 次,然后尝试变基吗?我该如何正确地做到这一点?
我不确定这里最好的行动方案是什么(通常这是相当 preference/policy 驱动的),但是如果你想做一个变基并将所有提交压缩成一个,你可以做:
git checkout develop
git rebase -i BranchA
这将打开一个编辑器,其中在 develop
上的每个提交都有一行,但在 BranchA
.
此编辑器中的说明概述了您可以执行的操作,但在这种情况下您可以:
- 将最顶层(第一个)提交操作保留为
pick
- 将所有其他提交操作更改为
squash
或fixup
squash
和 fixup
之间的区别在于,squash 会将压缩提交的所有提交消息连接在一起,并允许您编辑此提交消息,而 fixup
只会使用其他人 "fixed-up" 提交的提交消息,不允许您对其进行编辑。
我的偏好通常是使用 squash
来至少保留一些类似的提交历史记录,但这完全取决于我的分支到那时为止的完善程度。
I have tried to rebase develop onto BranchA
否:您需要将您的分支重新定位到公共分支 develop
git checkout BranchA
git rebase develop
如果多次出现类似的合并冲突,git rerere
can help。
另一种方法是简单地将 develop
合并到 BranchA
。
The point is that I want to add the change in FileA from new develop commit, to latest version for FileA from my BranchA.
对于给定的文件,一旦 rebase 被冲突阻止,您可以简单地检出它:
git checkout develop -- FileA
git rebase --continue
这样,解决的速度非常快(因为您用 develop
分支中的文件覆盖了 FileA)