簡體   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