繁体   English   中英

git不会提交,因为删除的文件不存在

[英]git won't commit because a deleted file doesn't exist

似乎我已经以某种方式将git置于一个不会提交的状态,因为已删除的文件不存在:

~/src$ git status -u
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
#   (use "git push" to publish your local commits)
#
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#   deleted:    release-vars.sh
#
~/src$ git commit -a
fatal: pathspec 'release-vars.sh' did not match any files
~/src$ ls release-vars.sh
ls: cannot access release-vars.sh: No such file or directory

关于如何解决这种情况的任何想法?

-a明确告诉它从工作树中的内容提交每个当前跟踪文件的当前版本。 它的操作并不完全相同

git add --all

这可能就是你在这里所追求的。 然后做一个普通的提交。

如果您的.gitignore规范留下未经标记的碎屑,您不想跟踪您可以改为git rm --cached显式删除已删除的文件,以便后续的git commit -a不会跳过意外丢失的文件。

我建议首先使用git add FILENAMEgit rm FILENAME手动暂存您的更改,然后再执行提交而不使用-a选项。 (即只是去git commit -m "SOME MESSAGE"

git commit -a表示自动git commit -a已修改和删除的文件。 当您尝试从本地可能仍然存在的git中删除文件时,这将是有问题的。

明确你正在做的事情很少是坏事,可以很容易地解决问题。

如果这不起作用; 尝试做git reset然后尝试新鲜。

git help rm提供的另一个选项如下:

如果您真正想要做的就是从索引中删除工作树中不再存在的文件(可能是因为您的工作树是脏的,因此您不能使用git commit -a),请使用以下命令:

  git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM