在git中恢复分支

时间:2013-07-17 12:14:13

标签: git merge

我一直在分支机构工作,说master。更改已推送到远程存储库。我的历史看起来像这样:

*----*----*----* master

然后我意识到我可能做错了什么并想从不同的方法开始。我这样做是通过创建一个新的分支:

*----*----*----* master
     \
      *----*----* different-approach

在一些新的提交之后,我认为新方法比master分支中的方法更好,所以我想从现在开始在master分支上使用它。所以我做了一个合并:

git checkout master
git merge different-approach

如果有任何冲突,我总是从different-approach合并中选择版本。问题是,对于某些文件没有冲突,所以git会自动合并,留下来自master分支的不良内容。

在这种情况下我该怎么办?似乎没有办法强制手动合并git中的所有文件。当然,我可以将存储库克隆到不同的目录,并在提交合并之前将其中的所有文件复制到原始目录。但是,有没有更清洁,更简单的方法呢?

2 个答案:

答案 0 :(得分:2)

通过还原不需要的提交来修复它。

// Revert all commits in master one-by-one
$ git checkout master
$ git revert --no-edit different-approach..master
$ git merge different-approach

// Revert all commits in master at once
$ git checkout master
$ git revert --no-commit different-approach..master
$ git commit -m "Revert foo"
$ git merge different-approach

答案 1 :(得分:-1)

如果您想完全忽略master上的更改而不是different-approach上的更改,您可以:

git checkout master
git reset --hard different-approach

警告,这会完全消除masterdifferent-approach以外的更改。