如何从最新提交中删除文件?


当前回答

git reset --soft HEAD~1. 

这将撤消本地回购中的最后一次提交,并将所有内容移回提交前的阶段区域。然后,只需正常使用任何Git UI工具(如TortoiseGit、Git UI、Git Extensions…)来取消我们不想提交的文件的页面,然后再次提交。

其他回答

事实上,我认为一种更快更简单的方法是使用git rebase交互模式。

git rebase -i head~1  

(或头~4,你想走多远)

然后,使用“edit”代替“pick”。我没有意识到“编辑”有多强大。

https://www.youtube.com/watch?v=2dQosJaLN18

希望你会发现它有帮助。

git reset --soft HEAD~1. 

这将撤消本地回购中的最后一次提交,并将所有内容移回提交前的阶段区域。然后,只需正常使用任何Git UI工具(如TortoiseGit、Git UI、Git Extensions…)来取消我们不想提交的文件的页面,然后再次提交。

Here is the step to remove files from Git Commit.

>git reset --soft HEAD^1(either commitid ) -- now files moved to the staging area.
>git rm --cached filename(it will removed the file from staging area)
>git commit -m 'meaningfull message'(Now commit the required files)

如果尚未在服务器上推送更改,则可以使用

git reset --soft HEAD~1

它将重置所有更改并恢复为一次提交

如果您已经推动了更改,请按照@CharlesB回答的步骤操作

现在,苹果已经将所有MacOS用户更新为zsh,正确的答案不再有效。

git reset --soft HEAD^
zsh: no matches found: HEAD^

您可以通过单引号防止shell将^视为特殊字符。

git reset --soft 'HEAD^'

或者,您可以在shell中禁用此行为。通过更新~/.zshrc

unsetopt nomatch