我一直在分支机构工作,说master
。更改已推送到远程存储库。我的历史看起来像这样:
*----*----*----* master
然后我意识到我可能做错了什么并想从不同的方法开始。我这样做是通过创建一个新的分支:
*----*----*----* master
\
*----*----* different-approach
在一些新的提交之后,我认为新方法比master分支中的方法更好,所以我想从现在开始在master
分支上使用它。所以我做了一个合并:
git checkout master
git merge different-approach
如果有任何冲突,我总是从different-approach
合并中选择版本。问题是,对于某些文件没有冲突,所以git会自动合并,留下来自master
分支的不良内容。
在这种情况下我该怎么办?似乎没有办法强制手动合并git中的所有文件。当然,我可以将存储库克隆到不同的目录,并在提交合并之前将其中的所有文件复制到原始目录。但是,有没有更清洁,更简单的方法呢?
答案 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
警告,这会完全消除master
上different-approach
以外的更改。