我删除了一些文件,git状态如下图所示。

我已经承诺并努力了。

GitHub仍然在存储库中显示已删除的文件。如何删除GitHub存储库中的文件?

# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    modules/welcome/language/english/kaimonokago_lang.php
#   deleted:    modules/welcome/language/french/kaimonokago_lang.php
#   deleted:    modules/welcome/language/german/kaimonokago_lang.php
#   deleted:    modules/welcome/language/norwegian/kaimonokago_lang.php

如果我使用git rm,它会给出以下结果。

usage: git rm [options] [--] <file>...

-n, --dry-run         dry run
-q, --quiet           do not list removed files
--cached              only remove from the index
-f, --force           override the up-to-date check
-r                    allow recursive removal
--ignore-unmatch      exit with a zero status even if nothing matched

当前回答

git status | sed 's/^#\s*deleted:\s*//' | sed 's/^#.*//' | xargs git rm -rf

其他回答

git add -u .

git add --update .

我有这个问题的幽灵文件出现在我的回购后,我删除了他们,遇到了这个整洁的命令!

git添加-A

它本质上与git add -a和git add -u的组合相同,但它区分大小写。我从这个很棒的链接(这个链接现在指向archive.org上的版本,因为原始版本在2016年6月已经转换为垃圾邮件/钓鱼页面)

内置的清洁功能也很有帮助…

git clean -fd

试试这个:

 git rm `git ls-files -d`

是的,git rm <filename>将显示文件的删除状态,其中<filename>可能是一个glob模式:

$ git rm modules/welcome/language/*/kaimonokago_lang.php
rm modules/welcome/language/english/kaimonokago_lang.php
rm modules/welcome/language/french/kaimonokago_lang.php
rm modules/welcome/language/german/kaimonokago_lang.php
rm modules/welcome/language/norwegian/kaimonokago_lang.php

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    modules/welcome/language/english/kaimonokago_lang.php
#       ...

然后,你就可以承诺了。

Git commit -a可以一次性完成,如果你愿意的话。

你也可以使用git add -u执行所有的更改,包括所有被删除的文件,然后提交。