如何从最新提交中删除文件?
当前回答
从git 2.23开始,您可以简单地使用以下命令:
git restore --staged <file>
其他回答
现有的答案都是关于从上次提交中删除不需要的文件。
如果您想从旧提交(甚至推送)中删除不需要的文件,并且不想创建新提交,这是不必要的,因为执行以下操作:
使用查找您希望文件符合的提交;
git-log--图形--装饰--单行
使用签出提交
git checkout<commit_id><path_to_file>
如果要删除许多文件,可以多次执行此操作。
3.
gitcommit-am“删除不需要的文件”
4.
查找错误添加文件的提交的commit_id,让我们在这里说“35c23c2”
git rebase 35c23c2~1-i//注意:“~1”是必需的
此命令根据您的设置打开编辑器。默认值为vim。如果要更改全局git编辑器,请使用;
git-config--全局core.editor<editor_name>
5.
将最后一次提交(应该是“删除不需要的文件”)移动到错误提交的下一行(在我们的例子中是“35c23c2”),并将命令设置为fixup:
pick 35c23c2 the first commit
fixup 0d78b28 remove unwanted files
保存文件后你应该很好。
6.
要完成:
git push-f
如果不幸发生冲突,则必须手动解决。
git reset--soft HEAD ^返回您的提交,当您键入git status时,它会告诉您要做什么:
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
这是我从比特桶回购中删除文件的工作,我最初将文件推送到分支。
git checkout origin/develop <path-to-file>
git add <path-to-file>
git commit -m "Message"
git push
事实上,我认为一种更快更简单的方法是使用git rebase交互模式。
git rebase -i head~1
(或头~4,你想走多远)
然后,使用“edit”代替“pick”。我没有意识到“编辑”有多强大。
https://www.youtube.com/watch?v=2dQosJaLN18
希望你会发现它有帮助。
git rm -r ./* --cached
这将删除所有缓存/暂存文件
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别