merging/other 交错提交后的交互式变基
Interactive rebase after merging/other commits interleaving mine
我典型的 git 工作流程是从我们的 master 分支创建一个功能分支,进行小的提交,同时定期从 master 分支合并以跟上。
然后我在 github 上打开一个拉取请求,当它被接受时,我将删除该分支。我想更多地交互变基,但是当我这样做时,我会遇到合并提交和其他人的提交与我自己的交错。我不确定 how/if 我可以压缩这些提交还是 group/squash 我一个人?
例如,我的 git 分支日志在变基时可能如下所示:
merge commit
someone else's commit
one of my commits
another one of my commits
another merge commit
another person's commit
one of my commits, the first one after branching
在进行交互式变基以及压缩和重新排序提交时,我无法确定什么是可能的,什么不是。鉴于上述工作流程,您会推荐什么?
我们办公室使用的流程是在合并您的拉取请求之前变基到 master
分支(或您希望合并到的任何分支)。这确保您的提交在当前 master
中的所有其他提交之上排序,这消除了您的提交与其他提交的交错:
> git fetch upstream master
> git rebase upstream/master
我不确定 how/if 我可以压缩这些提交还是 group/squash 我一个人?
只压缩你的提交而不压缩其他的!!
最近,我遇到了同样的问题,我的拉取请求有 41 次提交,我的分支有合并冲突,我的拉取请求已过时。我不得不处理你现在面临的一些问题。我只会触及我已经实现的东西。
one of my commits
another one of my commits
one of my commits, the first one after branching
I suggest squash only your commits (all of them if you want to).
例如,如果您有 3 个提交,您可以将它们压缩并使用交互式变基合并为一个。请参阅以下命令:
$ git rebase -i HEAD~n
例如,您想要压缩 3 次提交:
$ git rebase -i HEAD~3
现在,您会看到一个交互式 rebase 界面,您可以在其中编写 reword/pick 第一次提交并压缩其余的提交。请观看此视频以更好地理解。
merge commit
someone else's commit
another merge commit
another person's commit
Rebase to other (someone else) commits
这是大家在使用git时都会遇到的共同问题。想象一下,您正在处理本地回购。工作了一段时间后,你做了一些提交,现在你想把它们推送到原来的远程仓库。太棒了,你做了这个 git push
说 merge commit
问题。
你知道其他人可能也提交了现在更新的同一个远程仓库。由于您的本地存储库未更新到远程存储库,因此有 merge commit problem
。
现在,如果我们解决这个问题呢?我们可以将本地机器的存储库更新为您原来的远程存储库吗?可能吗?
Yes, it is possible, you can do it by rebasing. How?
当你这样做时:
git pull --rebase
这里发生了什么? Git 将倒回(撤消)所有本地提交,拉下远程提交,然后在新拉取的远程提交之上重播本地提交。如果出现 git 无法处理的任何冲突,您将有机会手动合并提交,然后只需 运行 git rebase --continue
继续重播本地提交。
查看此blog post了解更多详情
If you want to merge your branch to master?
Best (and safest) way to merge a git branch into master
我典型的 git 工作流程是从我们的 master 分支创建一个功能分支,进行小的提交,同时定期从 master 分支合并以跟上。
然后我在 github 上打开一个拉取请求,当它被接受时,我将删除该分支。我想更多地交互变基,但是当我这样做时,我会遇到合并提交和其他人的提交与我自己的交错。我不确定 how/if 我可以压缩这些提交还是 group/squash 我一个人?
例如,我的 git 分支日志在变基时可能如下所示:
merge commit
someone else's commit
one of my commits
another one of my commits
another merge commit
another person's commit
one of my commits, the first one after branching
在进行交互式变基以及压缩和重新排序提交时,我无法确定什么是可能的,什么不是。鉴于上述工作流程,您会推荐什么?
我们办公室使用的流程是在合并您的拉取请求之前变基到 master
分支(或您希望合并到的任何分支)。这确保您的提交在当前 master
中的所有其他提交之上排序,这消除了您的提交与其他提交的交错:
> git fetch upstream master
> git rebase upstream/master
我不确定 how/if 我可以压缩这些提交还是 group/squash 我一个人?
只压缩你的提交而不压缩其他的!!
最近,我遇到了同样的问题,我的拉取请求有 41 次提交,我的分支有合并冲突,我的拉取请求已过时。我不得不处理你现在面临的一些问题。我只会触及我已经实现的东西。
one of my commits
another one of my commits
one of my commits, the first one after branching
I suggest squash only your commits (all of them if you want to).
例如,如果您有 3 个提交,您可以将它们压缩并使用交互式变基合并为一个。请参阅以下命令:
$ git rebase -i HEAD~n
例如,您想要压缩 3 次提交:
$ git rebase -i HEAD~3
现在,您会看到一个交互式 rebase 界面,您可以在其中编写 reword/pick 第一次提交并压缩其余的提交。请观看此视频以更好地理解。
merge commit
someone else's commit
another merge commit
another person's commit
Rebase to other (someone else) commits
这是大家在使用git时都会遇到的共同问题。想象一下,您正在处理本地回购。工作了一段时间后,你做了一些提交,现在你想把它们推送到原来的远程仓库。太棒了,你做了这个 git push
说 merge commit
问题。
你知道其他人可能也提交了现在更新的同一个远程仓库。由于您的本地存储库未更新到远程存储库,因此有 merge commit problem
。
现在,如果我们解决这个问题呢?我们可以将本地机器的存储库更新为您原来的远程存储库吗?可能吗?
Yes, it is possible, you can do it by rebasing. How?
当你这样做时:
git pull --rebase
这里发生了什么? Git 将倒回(撤消)所有本地提交,拉下远程提交,然后在新拉取的远程提交之上重播本地提交。如果出现 git 无法处理的任何冲突,您将有机会手动合并提交,然后只需 运行 git rebase --continue
继续重播本地提交。
查看此blog post了解更多详情
If you want to merge your branch to master?
Best (and safest) way to merge a git branch into master