让git忘记我对文件做了什么

时间:2011-08-18 21:30:37

标签: git

Theres我可能在我的分支中意外更改了一个文件,我已经承诺并多次重新设置。在我将这个分支移交给其他人之前,我想让git忘记我曾经对此文件做过任何事情。

如何让git从主分支(其他人一直在更新)中获取该文件的最新版本,并忘记我的分支曾触及该文件的事实?

2 个答案:

答案 0 :(得分:3)

在您的分支机构上,您可以从master

结帐文件
git checkout master the_file

提交更改,然后找到意外更改文件的提交的sha1。并使用

git rebase -i that_sha1

您将看到从您的分支机构提交的提交列表,从最旧到最新。在第一行(不正确的提交)之后移动最后一行(您刚刚进行的修正提交)并将pick更改为fixup。这与修改不正确的提交具有相同的效果,然后在其基础上重新设置其余的提交。

这一切都假设您没有发布您的分支。如果你这样做了,其他人现在也有,那你就麻烦了。

答案 1 :(得分:1)

最简单的方法是从master检出文件,以覆盖您的更改。提交刚刚签出的文件后,您可能希望重新绑定/压缩分支以删除对该文件所做的任何提交。结帐的语法是:

git checkout origin/master <path_to_file>

更高级的选项可能是使用git-filter-branch