无法完成Git重基

无法完成Git重基,git,git-rebase,Git,Git Rebase,我目前正在处理一个分支,希望用master更新它。所以我试着做了一个重基 我目前从事的分支机构:crtdev 我试过像这样做 git checkout crtdev git rebase master // used diff mergetool to solve merge issues git rebase --continue 现在是说,应用:“我在该分支中完成的所有提交消息” 但是在那之后需要做什么呢 我检查了回购协议,没有任何更改,当我说“git status”时,我看到合并的文件显

我目前正在处理一个分支,希望用master更新它。所以我试着做了一个重基

我目前从事的分支机构:crtdev

我试过像这样做

git checkout crtdev
git rebase master
// used diff mergetool to solve merge issues
git rebase --continue
现在是说,应用:“我在该分支中完成的所有提交消息”

但是在那之后需要做什么呢

我检查了回购协议,没有任何更改,当我说“git status”时,我看到合并的文件显示为filename.html.orig

--编辑 当我运行一个
git-rebase——继续
时,我收到一条消息没有进行任何rebase?

通过运行
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)

要完成重基,需要做什么

重新基础已完成

看,它没有说任何关于正在进行的再基地的事情。重基已经完成。它唯一说的是,
crtdev
origin/crtdev
发生了分歧,但这正是它在重新基准后应该说的

您已经在
master
上重新设置了
crtdev
的基础。这意味着您已经放弃了
crtdev
的旧历史,并在
master
上重新创建了它。然而,
origin/crtdev
是一个单独的参考,仍然指向旧的历史。您的历史记录现在看起来像:

X--Y--Z...--master
 \             \
  \             A'--B'--C'--D'--E'--F'--crtdev
   \
    A--B--C--D--E--F--origin/crtdev
修订版
A'
-
crtdev
A
-
origin/crtdev
进行了相同的更改(无冲突解决),但它们是新的更改。因为它们还包含来自master和commit的新更改,git中的ID是其内容的校验和

现在如果没有其他人基于
origin/crtdev
,那么您只想推出新的历史记录
git push-f
(分支名称匹配,因此不需要参数;完整命令将是
git push-f origin crtdev:crtdev


但是,如果有人已经使用了
origin/crtdev
,则表明您做了错误的事情。您应该放弃重基(
git reset--hard origin/crtdev
)的结果,而改为
merge
。问题是,如果已经有其他基于分支的工作,它将仍然基于它的旧版本。虽然可以在新版本上重新设置基础,但对于毫无戒心的同事来说,很容易忘记并做了一些错误的事情,让他们感到非常困惑。

是什么让您觉得重新设置基础不完整?在git日志中,我没有看到任何提交,在文件系统中打开文件时也没有看到合并。这就是为什么我认为再基础尚未完成。我是否需要在做了一个重基后提交?而你的帖子并没有显示这一点。根据您发布的内容,重新基础进行得很好,并且已经完成。@JanHudec看起来重新基础已经完成。但为什么我的更改合并更改不在文件系统中。除了filname.orgi.*.orig文件是在merg过程中创建的临时文件外,没有其他文件可以进行git添加。现在一切都清楚了!!谢谢你的解释。我相信在我的情况下,rebase是成功的,我可以从master那里看到你提到的新分支。我现在将做一个git push来完成事情。但我不理解你所说的“如果没有其他人基于origin/crtdev”。我的理解是,除了我之外,是否还有其他人在该分支上使用“做重基”?这就是它的意思吗?我已经成功地推送了这些文件,现在我的日志显示(HEAD、origin/crtdev、crtdev)是同步的。@om39a:问题是,如果有人基于分支的进一步更改而您重新设置了它的基础,他们的更改仍然基于分支的旧版本。如果他们知道并且非常小心,他们也可以通过重定基址来修复它,但是很容易失去对事物的跟踪,因此强烈建议不要对已发布的分支重定基址。@om39a:嗯,
HEAD
只是您签出的分支的别名,所以
HEAD
crtdev
显然是相同的,您推了推,使用
-f
,因此您已将
原点/crtdev
设置为
crtdev
。因此,它们是同步的。Hidec,这使事情变得清晰。非常感谢你!!
X--Y--Z...--master
 \             \
  \             A'--B'--C'--D'--E'--F'--crtdev
   \
    A--B--C--D--E--F--origin/crtdev