警告:您在运行“git add”时既没有使用“-A(--all)”也没有使用“--ignore-removal”。

23
我想向git的另一个分支添加我的文件,具体步骤如下:
1. git checkout -b <newBranch> 2. 在新分支上修改了一些文件 3. git add . 但是出现了以下警告(在SO上没有找到任何类似的问题,令人惊讶,通过谷歌搜索也没有找到,这对我来说非常惊讶):
警告:“您运行了'git add'既不带'-A(--all)'也不带'--ignore-removal',其行为将在 Git 2.0 中与您删除的路径有关,请注意。像'thePathToFileIDeleted'这样从您的工作树中删除的路径将被忽略此版本的 Git。”
使用当前默认设置的'git add --ignore-removal'会忽略您从工作树中删除的路径。 'git add --all '将允许您记录删除的内容。
请运行'git status'以检查您从工作树中删除的路径。
是否有人知道这是什么意思,以及在这种情况下我该怎么做?我的git版本是1.8.3.2

很可能快速的进展步伐会压垮我们所有快乐的Git用户 :) - user3159253
3个回答

30

它的意思是你应该使用git add -Agit add --ignore-removal .,因为git add .在较新版本的git中会有不同的行为。由于它说当前版本将忽略已删除的路径,我最好的猜测是下一个版本将默认包括它们。

它希望你明确是否想要在当前目录中暂存已删除的路径。

如果您想添加已删除的路径,应该使用git add -A

如果您不想添加已删除的路径,应该使用git add --ignore-removal .

我认为它仅仅是在警告你,这样你就会知道如果升级git,你的命令会做一些意外的事情(即与现在不同),所以你可以采取上述两种选项之一,或者只是记录即将发生的变化并继续前进,理解你目前正在忽略已删除的路径。


1
谢谢,很棒。我得出了类似的结论。你能确认一下如果我想删除我的“已删除文件”,我必须使用git add -A吗?默认情况下文件仍将存在吗?因为我实际上再也看不到那个文件了。 - Salvador Dali
1
是的,仅根据您的警告消息,“git add -A”应该“记录删除操作”。 - merlin2011
奇怪的是,'git add --ignore-removal <pathspec>' 是当前默认设置,我没有选择任何内容,所以它采用了默认设置。但是当我在磁盘上检查时,我找不到我删除的文件。 - Salvador Dali
2
顺便提一下,你应该使用 git rm 来删除文件,而不是通过其他方式删除它们。这样就不会出现这种情况了,因为你在删除文件的同时将其标记为删除。 - Wooble
1
那么,实际上这两种选择在实践中有什么实际区别呢?如果我选择了 --ignore-removal,而 git 没有“记录”我的文件删除,那么后续会有什么影响呢? - Ifedi Okonkwo
显示剩余2条评论

0

我也遇到了同样的问题。

  • 存在一个名为ABC的目录
  • 删除该目录
  • 创建新的符号链接名称ABC指向一个DEF目录。
  • 运行git status。问题出现了。

解决方案:取决于您的目的。

  • 您可以运行其中一个命令。
  • 或者创建新目录备份ABC符号链接的DEF目录。这样,您就可以通过git跟踪它们。

0

目前看来这并不是一个大问题,因为在我的情况下一切都正常工作(我能够提交我的阶段,合并分支并将所有内容推送到服务器上,没有任何问题)。

我遇到的问题是因为我删除了一些文件(我之前使用过类似的程序很多次,没有警告)。根据我的理解,git只是告诉我当前格式已经过时,并且将在版本2中更改。看起来我必须使用git add -A才能真正从暂存区中删除我的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接