Git - 拒绝主人没有做任何事情

时间:2017-05-22 13:50:03

标签: git

我已经为实验创建了一个分支。我已经确定这是我想要的方向,所以想把更改放到主人身上。

我不想合并,我更喜欢rebase,因为这听起来正是我想要的(就像我一直在使用master一样)。

查看documentation,看起来很简单(这是来自文档的说明):

  

但是,还有另一种方法:您可以获取C4中引入的更改补丁并在C3之上重新应用它。在Git中,这称为变基。使用rebase命令,您可以获取在一个分支上提交的所有更改,并在另一个分支上重播它们。

     

在此示例中,您将运行以下命令:

$ git checkout experiment
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: added staged command

'实验'就我而言,分支是“非规范化的”#39;已经检出(从我的控制台输出):

$ git status
On branch denormalized
Your branch is up-to-date with 'origin/denormalized'.
nothing to commit, working tree clean

现在,我致电git rebase master

$ git rebase master
Current branch denormalized is up to date.

好的,根据文档,这不是我所期待的。两个分支似乎也没有变化:

enter image description here

主人仍然是变革之前的样子。我可以看看,没有任何改变。

我错过了什么?

2 个答案:

答案 0 :(得分:4)

要将这些更改变为主数据,您需要执行以下操作:

git checkout master
git merge denormalized

合并会将这些更改提取到您的分支中。

rebase的作用是什么,它将那些提交链接起来,但仍然在你的其他参考文献中。

合并后,您应该在master

处同时使用denormalized-Refactored the generator... HEAD

它显示了您在图37上方执行此操作

答案 1 :(得分:2)

虽然马特克拉克的答案对你目前的情况来说是一个正确的程序,但我认为这有些事情不清楚;所以我将添加以下内容:

您发出的rebase命令是正确的,但它并没有完全符合您的想法。如果你有

A --- B --- C <--(masteR)
       \
        D --- E <--(branch)

(所以master已经从branch的分支点开始移动了,并且你希望在没有合并提交的情况下将branch合并到master中,然后一个rebase会是第一步。

git checkout branch
git rebase master

(或简写git rebase master branch)。这给了

A --- B --- C <--(masteR)
             \
              D' --- E' <--(branch)

现在可以进行快速合并(将branch合并到master而不进行合并提交),而不是之前。要使快进,你可以

git checkout master
git merge branch

(可以快进,因为它可以),或者仍在branch

git branch -f master

只是迫使master分支移动到你所在的位置(通常是一个更危险的命令,但在这里具有相同的效果)。

在你的情况下,因为分支已经在master的尖端,所以不需要rebase,你可以直接进入ff merge。

请注意,如果您与其他开发人员共享分支机构(例如通过远程存储库)并且他们可能正在使用分支机构(例如,因为您已将其推送),那么您应该小心重新定位该分支(即你需要与其他开发人员协调来完成它)。参见&#34;从上游rebase恢复&#34;在git rebase文档中。 https://git-scm.com/docs/git-rebase