Theres我可能在我的分支中意外更改了一个文件,我已经承诺并多次重新设置。在我将这个分支移交给其他人之前,我想让git忘记我曾经对此文件做过任何事情。
如何让git从主分支(其他人一直在更新)中获取该文件的最新版本,并忘记我的分支曾触及该文件的事实?
答案 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