【问题标题】:git won't commit because a deleted file doesn't existgit 不会提交,因为已删除的文件不存在
【发布时间】:2015-02-03 23:00:38
【问题描述】:

似乎我以某种方式使git 进入了一种不会提交的状态,因为已删除的文件不存在:

~/src$ git 状态 -u # 在分支master上 # 你的分支在 'origin/master' 之前 5 次提交。 # (使用“git push”发布你的本地提交) # # 要提交的更改: # (使用“git reset HEAD ...”取消暂存) # # 删除:release-vars.sh # ~/src$ git commit -a 致命:pathspec 'release-vars.sh' 不匹配任何文件 ~/src$ ls release-vars.sh ls: 无法访问 release-vars.sh: 没有这样的文件或目录

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

【问题讨论】:

  • 可能是这个的副本? git-rm-fatal-pathspec-did-not-match-any-files
  • 不是真的,这是处理大型文件的特殊情况,而不是微不足道的一个文件情况。
  • 这是文件系统区分大小写的问题吗?
  • 只需重新创建文件:touch release-vars.sh,提交,然后通过 git 干净地删除它

标签: git


【解决方案1】:

-a 明确告诉它从工作树的内容中提交每个当前跟踪文件的当前版本。这和操作不太一样

git add --all

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

如果您的 .gitignore 规范留下未忽略的碎屑,您不想跟踪您可以改为明确地 git rm --cached 删除的文件,这样您的后续 git commit -a 就不会绊倒意外丢失的文件。

【讨论】:

  • 它在我的系统上进行删除。当您在提交之前执行git add --all 时,提交会说什么?
【解决方案2】:

我建议先使用git add FILENAMEgit 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

【讨论】:

  • 感谢您的建议。但是我现在该怎么办?
  • @SteveEmmerson 您是否尝试过在没有-a 选项的情况下提交?只是一个简单的git commit
  • @SteveEmmerson 如果你尝试 git rm --cached release-vars.sh 然后 git commit -m "remove release-vars.sh" 会发生什么
猜你喜欢
  • 1970-01-01
  • 2012-08-11
  • 2018-02-02
  • 2011-01-29
  • 2020-07-18
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多