似乎我已经以某种方式将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
关于如何解决这种情况的任何想法?
答案 0 :(得分:0)
-a
明确告诉它从工作树中的内容提交当前版本的每个当前跟踪文件。这与
git add --all
这可能就是你在这里所追求的。然后做一个普通的提交。
如果您的.gitignore
规范留下未经签名的碎片而您不想跟踪,则可以明确git rm --cached
删除的文件,以便后续的git commit -a
不会错过意外丢失的文件
答案 1 :(得分:-1)
我建议首先使用git add FILENAME
和git rm FILENAME
手动暂存更改,然后再执行-a
选项。 (即只是去git commit -m "SOME MESSAGE"
)
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