git是否会错误分支?

时间:2014-04-21 17:27:00

标签: git rebase

我有三个分支:

master
dev
feature

我的分支master是最新的。我想用我的分支feature来重新定义 master

git checkout feature
git rebase master

但是一开始我看到了:

First, rewinding head to replay your work on top of it...
Applying: ajout model widget desc + stats
Using index info to reconstruct a base tree...

ajout model widget desc + stats是此分支上的第一个提交。 因此,rebase使用的是我的分支的错误版本。

结果是很多混乱,我提交的文件已经消失。

例如:

<<<<<<< HEAD
            $this->createWidget('samples/footer','content', array('channeltitle'=>$channelTitle));
=======
            $this->createWidget('samples/desc','desc', array('channelTitle' => $channelTitle));
            $this->createWidget('samples/statistics','statistics', array('channelTitle' => $channelTitle));
            $this->createWidget('samples/footer','footer');
>>>>>>> ajout model widget desc + stats

他想用错误的提交来重新分配分支主管的头部...(ajout model widget desc + stats)

我搜索了一个解决方案,用最新的提交来修改我的分支。

| * fac92fe (HEAD, origin/feature, feature) work better
| * a366488 works in AJAX !
| * f5d120e appel ajax dans la vue
| * c1f8360 ajout model ajax bestVide, FeaturedChannel (no cache active)
| * 211fda0 ajout widget network
| * 4d1c2a5 social link
| * c511472 ajout model widget desc + stats
|/
| *   2f8ddcc (origin/master, origin/HEAD, master) Merge branch 'dev'
| |\
|/ /
| * 0c859da dev Channel/Network + fix Artifice
|/
| * 41c0cfb (origin/update_channel, update_channel) update
| * 66015b6 ajout bannerimg
| * 1433e90 ajout entete script
| * 619d850 ajout dossiet script crontab
| * 8c4b2c8 channel inactive + simplification
| * 37c453c modif network
| * b764ddb fisrt version script update_channel
|/
*   5676028 Merge branch 'generalmodels'
|\
| * da10f84 Return JSON in utf8
| * 10f7897 good job bro
| * 3eadddc config grunt
:

1 个答案:

答案 0 :(得分:3)

实际上看起来并不错。

您的输出是预期的

  1. 首先回复feature
  2. 的所有提交内容
  3. 然后应用master中的所有提交。这不会失败,也没有特别的输出。
  4. 然后按顺序应用所有提交,从ajout...
  5. 开始

    在你的情况下,它会产生冲突。这并不罕见所以你需要在你选择的编辑器中解决它们,然后继续使用rebase 。在当前状态下,其余的提交仍在等待应用,它们不会丢失。

    1. 修复冲突。对于所有运行git add <file name>
    2. 的文件
    3. 然后git rebase --continue
    4. 直到rebase完成为止。
    5. 如果感觉像是破坏,你可以随时用git rebase --abort

      中止变种