我将某个分支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
我是对的吗?
答案 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)
进行了一些更改。
(您建议的命令列表以develop
和add
开头,所以我收集了那些甚至在本地上演的内容......):
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
现在你可以推。