Git 重定基址、一些本地更改和新的远程提交

Git 重定基址、一些本地更改和新的远程提交,git,git-merge,rebase,Git,Git Merge,Rebase,我将某个分支的X重定为develope,但我没有推动它(远程回购不知道重定) 接下来,我做了一些改变。同时,我的同事也推动了发展。 我也希望现在(在我的本地基础和一些变化之后)能够推动发展。此外,我希望将此重基和更改平坦化为一次提交(我知道squash,但在这种情况下我不能使用它) 我该怎么办?我认为是这样的: git add --update git commit -m "rebase + my changes" git fetch develop git rebase origin/d

我将某个分支的
X
重定为
develope
,但我没有推动它(远程回购不知道重定)

接下来,我做了一些改变。同时,我的同事也推动了发展。
我也希望现在(在我的本地基础和一些变化之后)能够推动发展。此外,我希望将此重基和更改平坦化为一次提交(我知道
squash
,但在这种情况下我不能使用它)

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

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

我说的对吗?

您给出的命令序列很接近,但它不会为rebase+本地更改创建一个提交。首先,您可能需要获取,下面的图表将假定您已将远程引用与远程repo保持同步。所以,如果有什么东西你还没有拿,就去拿吧。然后:

听起来好像你有

A --- B --- C <--(develop)(origin/develop)
       \
        X1 --- X2 --- X3 <--(branch_x)
您还对本地的
develope
进行了一些更改

(您建议的命令列表以
add
commit
开头,因此我认为这些命令甚至还没有在本地暂存…)

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

这给了你

A --- B --- C --- D <--(origin/develop)
                   \ 
                     X1X2X3Y <--(develop)
A--B--C--D的可能重复项
A --- B --- C --- D <--(origin/develop)
             \
              X1' --- X2' --- X3' <--(develop)
                                 \
                                  o <--WORKING TREE
git add --update
git commit
A --- B --- C --- D <--(origin/develop)
             \
              X1' --- X2' --- X3' --- Y <--(develop)
git checkout origin/develop
git merge --squash develop
# handle conflicts
git commit -m "rebase + my changes"
git branch -f develop
A --- B --- C --- D <--(origin/develop)
                   \ 
                     X1X2X3Y <--(develop)