0

我一直在分公司工作,比如说master。更改已推送到远程存储库。我的历史是这样的:

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

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

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

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

git checkout master
git merge different-approach

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

在这种情况下我能做什么?似乎没有办法强制对 git 中的所有文件进行手动合并。当然,我可以将存储库克隆到不同的目录,并在提交合并之前将所有文件从它复制到原始目录。但是没有更清洁和更简单的方法来做到这一点吗?

4

2 回答 2

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
于 2013-07-17T14:22:28.790 回答
-1

如果您想完全忽略masternot on 上的更改,different-approach您可以:

git checkout master
git reset --hard different-approach

警告,这将完全消除masternot on 上的更改different-approach

于 2013-07-17T12:28:42.947 回答