在我的文件中,Third last commit
我提交了一个有更改的文件“ four
”:
6e581cc (HEAD -> main) Last commit
A one
bbbce71 Second last commit
A two
083f1fb Third last commit
M four
A three
7752028 Fourth last commit
A four
我想从中删除更改four
(Third last commit
或者放弃更改,或者将更改添加到当前新的提交中 — 如果 git 只允许我放弃它们,我将手动将更改复制粘贴到新的提交中)
我已经尝试过git rebase -i 7752028
(倒数第四次提交)并将提交从更改pick
为edit
edit 083f1fb Third last commit
pick bbbce71 Second last commit
pick 6e581cc Last commit
在启动 rebase 并且 git 告诉我之后Stopped at 083f1fb... Third last commit
,我运行
git reset four
尝试four
从此次提交暂存的文件中删除。
但当我跑步时
git commit --amend
紧接着,我仍然被告知提交记录该文件已被包含:
Third last commit
# ...
# Changes to be committed:
# modified: four
# new file: three
#
确实,运行git rebase --continue
仍然git log --oneline --name-status -1 083f1fb
显示与之前完全相同的内容:
083f1fb Third last commit
M four
A three
我如何从历史提交中取消添加该文件?
我不想four
从存储库中删除该文件,main
应该仍然有该文件,但是提交不应该有对其引入的083f1fb..main
更改。083f1fb
你可以
git checkout HEAD^ -- four
改为运行。因为你现在的情况不是更改已four
暂存并即将提交,而是它们已提交。然后按照您描述的继续。
重新定基之后,您可以将差异恢复到重新定基之前(这应该只是对 的更改
four
):... 您确认
y
。然后git status
应该显示并且您可以创建一个新的提交,它只添加
four
之前添加的更改Third last commit
。