最好使用SourceTree或简单的git命令,如何在之前的提交中撤消对1文件的更改。换句话说,如何反转提交,但仅限于提交的许多文件中的1个?
希望避免必须撤消整个提交,然后重新发送除1文件之外的所有更改。
修改 我最后只是通过编辑手动“恢复”1文件。但是得到了两个好看的答案,我会选择一个似乎在更多情况下起作用的答案。
答案 0 :(得分:3)
如果您要撤消最新的提交但尚未推送,则可以发出以下命令:
git checkout HEAD^ -- <file_path> # revert and stage the problematic file
git commit --amend # edit the latest commmit
答案 1 :(得分:2)
执行:
git revert <commit> --no-commit #reverts the whole commit, putting changes in index and working dir
git reset HEAD . #clears index of changes
git add <fileyouwanttorevert> #adds changes to that one file to index
git commit -m "Reverting the file" #commits that one file's changes
git checkout . #gets rid of all the changes in working directory
答案 2 :(得分:0)
要在任意提交中将更改还原为文件,
git revert $thecommit # revert the whole commit
git reset --hard @{1} # in what turns out to have been a throwaway commit
git checkout @{1} $thatfile # take what you want
但如果不需要的更改在最近的提交中,您可以直接使用
查看未更改的版本git checkout @^ $thatfile # restore mainline-parent content