【问题标题】:git add * does not add deleted filesgit add * 不添加删除的文件
【发布时间】:2023-04-02 00:31:01
【问题描述】:

我有一个本地目录,我在其中初始化了 git。我已经在 git 中添加了该目录的所有文件:

git add *

现在,如果我从本地目录中手动删除一个文件,我也想将它从 github 中删除。我试过了

git add -A *

但它不起作用。每次我也必须从github手动删除它。

【问题讨论】:

  • 我做你正在尝试的没有问题。对我来说,git add -Agit add -A *(或 git add --all,这是同一个命令)都检测到删除的文件。你能显示更多信息吗? (并显示您的 git 版本)您可以在删除文件之前和之后以及执行 git add -A 命令之后执行 git status 吗?让我们看看会发生什么?
  • git status的作用是什么?它在使用 git status 后工作。非常感谢:D
  • 知道了。 git status 列出所有准备提交的文件,这些文件已添加到暂存中,以及当前未被 Git 跟踪的文件。使用此命令查看工作目录和暂存区的状态。
  • git status 可能是作为git status 输入的最有用的命令之一 - 它告诉你什么,嗯......状态是:)......例如,如果你执行git add *并添加了 3 个文件,然后您执行 git status 它将列出添加的三个文件....

标签: git github


【解决方案1】:

问题是 glob (*) 是由你的 shell 扩展的,而不是 git,而且 shell 对你已经删除的文件一无所知。 git add -A 没有更多参数将添加所有文件,包括已删除的文件。 git add . 也将在当前的 git 版本中执行此操作。您也可以按照其他答案中的建议对单个文件使用 git rm --cached <file>

使用git rm 删除文件通常更容易,因为这将删除文件并暂存删除。

【讨论】:

    【解决方案2】:

    您应该使用“git rm”命令。
    git rm /path/to/file

    ex: 进入你的 git 目录并输入
    git rm 文件.txt

    然后做一个 git commit 说:
    git commit -m "删除文件"

    最后将您的更改推送到您的 git 存储库。推送这些更改后,该文件现在也将从您的存储库中删除。

    这篇关于堆栈溢出的较早帖子提供了更多信息: Git: why the file deletion does not sync?

    希望这会有所帮助!

    【讨论】:

    【解决方案3】:

    如果你想从你的索引中删除一个文件,你应该使用

    git rm filename
    

    文档可以在这里找到:https://git-scm.com/docs/git-rm

    此命令的重要说明是:

    git rm 不会仅从您的工作目录中删除文件。 (没有选项可以仅从工作树中删除文件并将其保留在索引中;如果您想这样做,请使用 /bin/rm。)

    让我知道它是否有效!

    【讨论】:

    • 我知道这一点。实际上我想要一个将我的本地目录与 git 同步的命令。作为 git add -A * 将 github 与 git 同步,同时删除和添加文件和目录。
    【解决方案4】:

    您唯一需要做的就是从本地存储库中删除文件时,而不是手动删除从本地存储库使用的文件,

    git rm <file-name>
    

    git rm -rf <folder-name>
    

    之后,在本地提交更改并推送。它应该反映在本地和远程存储库中。


    或者如果您已经手动删除了本地存储库中的文件,现在如果您还想从远程存储库中删除,请使用--cached 属性。也就是说,

    git rm --cached <file-name>
    

    git rm -rf --cached <folder-name>
    

    现在,如果您手动删除了文件并希望在本地和远程 git 存储库中反映出来,请使用,

    git add -u .
    

    希望这会有所帮助! :)

    【讨论】:

    • 你没有得到这个。我想手动从本地目录中删除文件。然后将 git 与本地仓库同步。我也不想在 git 中手动删除每个文件。有没有这样的方法?
    • @NurImtiazulHaque 试试,git add -u . 这应该可以解决您的要求。
    • 谢谢它的帮助。但据我所知, git add -A 两者兼而有之。
    • @NurImtiazulHaque 是的,确实如此。这取决于。要了解更多信息,请阅读stackoverflow.com/questions/572549/…
    【解决方案5】:

    我总是使用git add -A . 来处理大多数事情。

    注意. 指定您的当前目录。这会添加任何更改,包括该目录中或该目录下的所有已删除文件 - 但不是在父目录中(这让我痛苦了几次)。

    只是将其添加到旧答案中,因为我没有看到它的建议。

    【讨论】:

      猜你喜欢
      • 2021-03-03
      • 2015-11-30
      • 2021-09-15
      • 2017-08-26
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      相关资源
      最近更新 更多