重新定位,一些更改本地和新远程提交

时间:2017-03-09 14:44:37

标签: git git-merge rebase

我将某个分支X重新设置为develop,但我没有推动它(远程回购并不知道变基)。

接下来,我做了一些改变。同时,我的同事做了一些努力发展 我现在也希望(在我当地的变革和一些变化之后)推动发展。此外,我想扁平化这个rebase并改为一个提交(我知道squash但我在这种情况下不能使用它)。

我该怎么办?我认为是这样的:

git add --update
git commit -m "rebase + my changes"   
git fetch develop
git rebase origin/develop
(solving potential conflicts)
?git commit? 
git push 

我是对的吗?

1 个答案:

答案 0 :(得分:0)

您提供的命令序列将很接近,但它不会为rebase +本地更改创建单个提交。首先,您也可以获取,下面的图表将假设您的远程引用与远程仓库保持同步。因此,如果您还没有获取任何内容,请继续进行获取。然后:

听起来像你有

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />

接下来你从A --- B --- C <--(develop)(origin/develop) \ X1 --- X2 --- X3 <--(branch_x) 重新开始发展(...所以希望没有远程branch_x?),而其他人推动了变革以开发:

branch_x

您从当地A --- B --- C --- D <--(origin/develop) \ X1' --- X2' --- X3' <--(develop) 进行了一些更改。

(您建议的命令列表以developadd开头,所以我收集了那些甚至在本地上演的内容......):

commit

因此,您希望将A --- B --- C --- D <--(origin/develop) \ X1' --- X2' --- X3' <--(develop) \ o <--WORKING TREE X1'X2'X3'合并到一个父级为o的提交中,对吗?

好吧,开始继续进行本地更改。

D

(不确定您为什么要使用git add --update git commit ,但只要您不想添加新文件,就可以了。)

--update

现在你说你不能做A --- B --- C --- D <--(origin/develop) \ X1' --- X2' --- X3' --- Y <--(develop) ,但我不清楚为什么会这样。在我看来,最简单的事情就是

squash

给你

git checkout origin/develop
git merge --squash develop
# handle conflicts
git commit -m "rebase + my changes"
git branch -f develop

现在你可以推。