如何从最新提交中删除文件?
当前回答
如果你还没有将你的更改推送到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
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 checkout origin/<remote-branch> <filename>
git commit --amend
注意!如果您只想从上一次提交中删除一个文件,并将其保存在磁盘上,请阅读上面juzzlin的回答。
如果这是您最后一次提交,并且您希望从本地和远程存储库中完全删除该文件,您可以:
删除文件git-rm<file>带有修正标志的commit:gitcommit--修正
修正标志告诉git再次提交,但“合并”(不是合并两个分支的意思)这次提交与最后一次提交。
如注释中所述,在这里使用gitrm就像使用rm命令本身一样!
我将用例子向你解释。设A、B、C为3次连续提交。提交B包含一个不应提交的文件。
git log # take A commit_id
git rebase -i "A_commit_ID" # do an interactive rebase
change commit to 'e' in rebase vim # means commit will be edited
git rm unwanted_file
git rebase --continue
git push --force-with-lease <branchName>
git rm -r ./* --cached
这将删除所有缓存/暂存文件
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?