我目前正在一个分支上工作,想用master更新它。所以我试着做一个回扣。
我正在工作的当前分支:crtdev
我试着像这样做,
git checkout crtdev
git rebase master
// used diff mergetool to solve merge issues
git rebase --continue
现在是这样说的,应用:“我在那个分支中所做的所有提交消息”
但在那之后需要做什么呢?
我检查了repo,没有任何更改,当我说
git status
时,我看到合并的文件显示为filename.html.orig--编辑
当我运行
git rebase --continue
时,我收到此消息没有正在进行的回扣?通过运行
Git status
我看到了这个消息# On branch crtdev
# Your branch and 'origin/crtdev' have diverged,
# and have 33 and 8 different commits each, respectively.
# (use "git pull" to merge the remote branch into yours)
要完成回扣,需要做什么?
最佳答案
回扣完成了。
# On branch crtdev
# Your branch and 'origin/crtdev' have diverged,
# and have 33 and 8 different commits each, respectively.
# (use "git pull" to merge the remote branch into yours)
看,它没有说任何关于正在进行中的回扣的事情。回扣完成了。它说的唯一一件事是
crtdev
和origin/crtdev
有分歧,但这正是它应该说的在一个回扣后。您已经在
crtdev
上完成了master
的重新定位。这意味着您已经放弃了crtdev
的旧历史,并在master
上重新创建了它。但是origin/crtdev
是一个单独的参考,仍然指向旧的历史。你的历史现在看起来像:X--Y--Z...--master
\ \
\ A'--B'--C'--D'--E'--F'--crtdev
\
A--B--C--D--E--F--origin/crtdev
修订版所做的更改(无冲突解决)与修订版相同,但它们是新的更改。因为它们还包含来自master的新更改,git中的commit id是其内容的校验和。
现在,如果没有其他人基于
A'
,你只想推出新的历史。crtdev
(分支名称匹配,因此不需要参数;完整命令将为A
)。但是,如果有人已经使用了
origin/crtdev
,那么您就做了错误的事情。您应该放弃rebase(origin/crtdev
)和git push -f
的结果。问题是,如果已经有其他基于分支的工作,那么它仍将基于它的旧版本。虽然可以在新版本上重新调整它,但对于毫无戒心的同事来说,很容易忘记并做错事,而且非常混乱。