这两个git分支的git重基步骤正确吗?

这两个git分支的git重基步骤正确吗?,git,branch,rebase,Git,Branch,Rebase,首先,我从我的主人那里创建了一个名为D的新分支,并从另一个分支C中进行了拉取 我做了一些更改并结束了它,后来我做了一个git fetch(从master那里带来可能的更改) 我想用master在一个分支中进行更改,所以我做了一个重基 我这样做了,但有冲突,但我不明白,因为如果我从我的主节点创建分支(D),我应该已经更改了,对吗 我已经解决了所有冲突(git add和git rebase--continue),但当我尝试推送到我的存储库时,出现了以下错误: ! [rejected]

首先,我从我的主人那里创建了一个名为
D
的新分支,并从另一个分支
C
中进行了拉取

我做了一些更改并结束了它,后来我做了一个
git fetch
(从master那里带来可能的更改)

我想用
master
在一个分支中进行更改,所以我做了一个重基

我这样做了,但有冲突,但我不明白,因为如果我从我的主节点创建分支(
D
),我应该已经更改了,对吗

我已经解决了所有冲突(
git add
git rebase--continue
),但当我尝试推送到我的存储库时,出现了以下错误:

! [rejected]        project-4.x.x -> project-4.x.x (non-fast-forward)
error: failed to push some refs to 'git@gitlab.cee.xxx.myrepo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
然后我又拉了一次,现在我必须解决很多冲突,然后再推。
对吗?或者我遗漏了什么?谢谢

在您的一个分支上运行
rebase
后,您的本地历史记录将不再与远程历史记录匹配

在这种特殊情况下,您不应尝试拉动遥控器,应强制将分支推回遥控器:

git push --force origin D
如果由于您的
git pull
,当前正在进行的合并存在冲突,只需中止它:

git merge --abort

一些解释:

在重新基准之前,您描述的情况必须是这样的:

*--*--*--a--b--c < D, origin/D           # you did some work on branch D
       \
        *--*--m < master, origin/master  # master received some more commits
在这种情况下:您的本地
D
分支不再是
origin/D
的“快进”扩展,您必须使用
git push--force origin D
告诉git服务器“这是我真正想要的历史”

*--*--*--a--b--c < origin/D
       \
        *--*--m--a'--b'--c' < D   # 'git rebase' created new commits on top of master
              ^
              master, origin/master