通过先前删除该文件的提交再次删除该文件
Delete again a file via a previous commit that deleted that file in the first place
场景:
- 删除file.txt文件,提交A并推送
- 恢复 file.txt 通过 git checkout commitA~1 file.txt , commitB 和 push
我想通过 运行 以下签出命令调用 commitA 再次 删除文件:
git checkout commitA --file.txt
但我明白了
error: pathspec 'file.txt' did not match any file(s) known to git
有没有办法重新删除文件?我可以只删除文件添加它并提交,但我想知道我是否可以通过重用 旧提交 ?!
来保持历史记录干净
编辑:我从文件路径中删除了 Source 以避免混淆
因为你的命令有误
它应该像这样 git restore --Source HEAD~1 file.txt
注意你的 HEAD 将被分离
如果您要更正的是 on-stage,请使用此 git restore --staged file.txt
取消暂存。
I want to [use git checkout
to] delete the file again by invoking [the commit in which I deleted it] ...
你不能那样做。这种形式的 git checkout
(或 git restore
就此而言)只能 添加或替换 文件,不能 删除 它.
如果您知道该文件在某个特定的提交中被删除并想再次删除它,请使用 git rm
(或者 git rm --cached
如果这个想法包括避免修改工作树)。
如果您不知道该文件是否存在,只是想将其恢复到原来的状态,即恢复到原来的状态如果它存在,或者完全删除它如果它不存在,你将需要一个if/then
测试:“Did file F exist在 commit C? 如果是,使用 git checkout
/ git restore
;如果否,使用 git rm
”。要测试它是否存在,请考虑使用 git ls-tree
(如果你想检查多条路径有用)或 git rev-parse
(如果你想检查单个路径有用)。您甚至可以使用 git checkout
中的错误作为文件不存在的指示符,尽管这看起来有点笨拙,也许 error-prone.
场景:
- 删除file.txt文件,提交A并推送
- 恢复 file.txt 通过 git checkout commitA~1 file.txt , commitB 和 push
我想通过 运行 以下签出命令调用 commitA 再次 删除文件:
git checkout commitA --file.txt
但我明白了
error: pathspec 'file.txt' did not match any file(s) known to git
有没有办法重新删除文件?我可以只删除文件添加它并提交,但我想知道我是否可以通过重用 旧提交 ?!
来保持历史记录干净编辑:我从文件路径中删除了 Source 以避免混淆
因为你的命令有误
它应该像这样 git restore --Source HEAD~1 file.txt
注意你的 HEAD 将被分离
如果您要更正的是 on-stage,请使用此 git restore --staged file.txt
取消暂存。
I want to [use
git checkout
to] delete the file again by invoking [the commit in which I deleted it] ...
你不能那样做。这种形式的 git checkout
(或 git restore
就此而言)只能 添加或替换 文件,不能 删除 它.
如果您知道该文件在某个特定的提交中被删除并想再次删除它,请使用 git rm
(或者 git rm --cached
如果这个想法包括避免修改工作树)。
如果您不知道该文件是否存在,只是想将其恢复到原来的状态,即恢复到原来的状态如果它存在,或者完全删除它如果它不存在,你将需要一个if/then
测试:“Did file F exist在 commit C? 如果是,使用 git checkout
/ git restore
;如果否,使用 git rm
”。要测试它是否存在,请考虑使用 git ls-tree
(如果你想检查多条路径有用)或 git rev-parse
(如果你想检查单个路径有用)。您甚至可以使用 git checkout
中的错误作为文件不存在的指示符,尽管这看起来有点笨拙,也许 error-prone.