通过先前的提交再次删除一个文件,该提交首先删除了该文件



场景:

  • 删除file.txt文件,commitA并推送
  • 通过git checkout commitA~1 file.txt、commitB和push恢复file.txt

我想通过运行以下checkout命令调用commitA再次删除文件

git checkout commitA --file.txt

但我有

error: pathspec 'file.txt' did not match any file(s) known to git

有没有办法重新删除文件?我可以删除文件,添加并提交,但我想知道是否可以通过重用旧的提交来保持历史记录的干净?!

编辑:我从文件路径中删除了Source以避免混淆

我想通过调用[我删除文件的提交]来[使用git checkout]再次删除文件。。。

你不能那样做。这种形式的git checkout(或git restore)只能添加或替换文件,而不能删除

如果您知道在某个特定的提交中删除了该文件,并希望再次删除它,请使用git rm(如果这个想法包括避免修改工作树,则使用git rm --cached)。

如果你不知道文件是否存在,只是想把它放回原来的状态——也就是说,如果它存在,就把它恢复到的状态,或者如果它不存在就把它完全删除,你将需要一个if/then测试:"文件F是否存在于提交C中如果是,请使用git checkout/git restore;如果否,则使用git rm";。要测试它是否存在,请考虑使用git ls-tree(如果要检查多个路径,则很有用)或git rev-parse(如果要查看单个路径,则非常有用)。您甚至可以使用git checkout中的错误来指示该文件不存在,尽管这看起来有点笨拙,而且可能容易出错。

因为您的命令错误它应该像这个git restore --Source HEAD~1 file.txt注意你的头将被分离

如果你想纠正的是在舞台上,使用这个git restore --staged file.txt来取消它

相关内容

  • 没有找到相关文章

最新更新