我有一个本地目录,其中我已经初始化了git。我使用以下命令将该目录中的所有文件添加到git:
git add *
现在,如果我手动从本地目录中删除文件,我希望也能够从 GitHub 中删除它。我尝试过
git add -A *
但这并不起作用。每次我都必须手动从GitHub中删除它。
*
) 是由你的shell扩展的,而不是由git扩展的,shell并不知道你已经删除的文件。如果使用git add -A
指令且没有其他参数,则会添加所有文件,包括已删除的文件。在当前的git版本中,git add .
也会这样操作。你也可以像其他答案建议的那样使用git rm --cached <file>
来处理单个文件。git rm
来删除文件,因为这将同时删除文件并将其加入暂存区。git rm filename
文档可以在这里找到:https://git-scm.com/docs/git-rm
这个命令的一个重要注意事项是:
git rm不会仅从您的工作目录中删除文件。(没有选项可以仅从工作树中删除文件并将其保留在索引中;如果您想这样做,请使用/bin/rm。)
如果有效,请告诉我!
唯一需要做的是,当从本地存储库中删除文件时,不要手动删除文件,而是使用,
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 add -u .
,这应该可以解决你的问题。 - bharadhwaj对于大多数情况,我总是使用git add -A .
。
请注意,.
表示当前目录。这将添加该目录或其子目录中的所有更改,包括所有已删除的文件,但不包括父目录中的文件(这在某些情况下会导致问题)。
我将此添加到旧答案中,因为我没有看到有人建议过这种方法。
git add -A
或者git add -A *
(或者是相同的命令git add --all
)都会检测到被删除的文件。你能展示更多信息吗?(并展示你的 git 版本)你可以在删除文件前后以及执行git add -A
命令后执行git status
吗?这样我们就可以看到发生了什么。 - code_foddergit status
的最有用的命令之一 - 它告诉您状态是什么,好吧...例如,如果您执行git add *
并添加了 3 个文件,然后执行git status
,它将列出这三个已添加的文件... - code_fodder