合并后的交互式重新分区/其他提交交织我的

我典型的git工作流程是在主分支上创建一个功能分支,进行小的提交,同时定期合并主程序以跟上。

然后我在github上打开一个pull请求,当它被接受时,我将删除这个分支。 我想交互式地更换,但是当我这样做时,我会遇到合并提交和其他人的提交与我自己交错。 我不知道如何/如果我可以压缩这些提交或集体/挤压我一个人?

例如,我的分支的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

我不知道如何/如果我可以压缩这些提交或集体/挤压我一个人?

只压制你的提交而非其他!

最近,我面临同样的问题,我的提交请求中有41次提交,我的分支发生了合并冲突,并且我的请求已过时。 我不得不面对现在面临的一些问题。 我只会碰到我实施的东西。

one of my commits
another one of my commits
one of my commits, the first one after branching

我建议只压扁你的提交(如果你愿意,所有提交)。

例如,如果你有3次提交,你可以压缩它们,并使用交互式重新分配。 看下面的命令:

$ git rebase -i HEAD~n

例如,你想压缩3个提交:

$ git rebase -i HEAD~3

现在,您会看到一个交互式底图界面,您可以在第一次提交时写入reword / pick,然后在其余的部分上进行压缩。 请参阅此视频以获得更好的理解。

压扁提交

merge commit
someone else's commit
another merge commit
another person's commit 

重新向其他人(其他人)提交

这是每个人在使用git时遇到的常见问题。 想象一下你正在研究你的本地回购。 工作了一段时间后,你做了一些提交,现在你想把它们推送到原始的远程仓库。 很酷,你做了这个说merge commit问题的git push

你知道别人也可能已经致力于现在更新的相同的远程回购。 由于您的本地回购没有更新到远程回购,因此存在merge commit problem 。 现在如果我们清楚这个问题呢? 我们可以将本地机器的回购更新到原始的远程回购机器吗? 可能吗?

是的,这是可能的,你可以通过重组来实现。 怎么样?

当你这样做时:

git pull --rebase

这里发生了什么事? Git会退回(撤消)所有的本地提交,拉下远程提交,然后在新提取的远程提交之上重放本地提交。 如果git无法处理任何冲突,您将有机会手动合并提交,然后只需运行git rebase --continue继续进行重放您的本地提交。

查看此博客文章了解更多详情

如果你想合并你的分支给主人?

将git分支合并到master中最好(也是最安全)的方法

链接地址: http://www.djcxy.com/p/49303.html

上一篇: Interactive rebase after merging/other commits interleaving mine

下一篇: In git, what is the difference between merge