如何从最新提交中删除文件?
当前回答
以下内容将显示您想要的文件,这是OP要求的。
git reset HEAD^ /path/to/file
您将看到以下内容。。。
要提交的更改:(使用“git reset HEAD…”取消页面)修改:/path/to/file未提交的更改:(使用“git add…”更新将提交什么)(使用“gitcheckout--…”放弃工作目录中的更改)修改:/path/to/file
“要提交的更改”是提交之前文件的先前版本。如果文件从未存在,这看起来像是删除。如果您提交此更改,则会有一个修订将更改还原为分支中的文件。“未提交的更改”是您提交的更改,以及文件的当前状态
此时,您可以对文件执行任意操作,例如重置为不同的版本。
当您准备好承诺时:
git commit --amend -a
或者(如果您还有其他不想提交的更改)
git commit add /path/to/file
git commit --amend
其他回答
你可以简单地尝试一下。
git reset --soft HEAD~1
并创建新的提交。
然而,有一个很棒的软件“gitkraken”。这使得使用git很容易。
如果你还没有将你的更改推送到git
git reset --soft HEAD~1
它将重置所有更改并恢复为一次提交
如果这是您最后一次提交,并且您希望从本地和远程存储库中删除文件,请尝试以下操作:
git rm <file>
git commit --amend
甚至更好:
先重置
git reset --soft HEAD~1
重置不需要的文件
git reset HEAD path/to/unwanted_file
再次提交
git commit -c ORIG_HEAD
git rm --cached <file_to_remove_from_commit_<commit_id>_which_added_file>
git commit -m "removed unwanted file from git"
将仍然保留本地文件。如果您也不希望文件在本地,可以跳过--cached选项。
如果所有工作都在您的本地分支上,您需要在以后提交时保存该文件,就像拥有一个干净的历史记录一样,我认为一个更简单的方法是:
git rm --cached <file_to_remove_from_commit_<commit_id>_which_added_file>
git commit --squash <commit_id>
git add <file_to_remove_from_commit_<commit_id>_which_added_file>
git commit -m "brand new file!"
git rebase --interactive <commit_id>^
然后,您就可以轻松地完成rebase,而无需记住更复杂的命令、提交消息或键入。
使用rm删除文件将删除它!
您总是在git中添加提交,而不是删除,因此在本例中,将文件返回到第一次提交之前的状态(如果文件是新的,这可能是删除“rm”操作),然后重新提交,文件将继续。
要将文件恢复到以前的状态,请执行以下操作:
git checkout <commit_id> <path_to_file>
或者将其返回到远程HEAD的状态:
git checkout origin/master <path_to_file>
然后修改提交,您应该会发现文件已从列表中消失(并且没有从磁盘中删除!)
如果尚未在服务器上推送更改,则可以使用
git reset --soft HEAD~1
它将重置所有更改并恢复为一次提交
如果您已经推动了更改,请按照@CharlesB回答的步骤操作
推荐文章
- 如何点Go模块的依赖在Go。Mod到回购中的最新提交?
- 为什么调用git分支——unset-upstream来修复?
- Windows git“警告:LF将被CRLF取代”,这是警告尾巴向后吗?
- git中的哈希冲突
- git可以自动在空格和制表符之间切换吗?
- Git暂存文件列表
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 真实的恶魔
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时