我删除了一些文件和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
Run Code Online (Sandbox Code Playgroud)
如果我使用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
Run Code Online (Sandbox Code Playgroud)
小智 627
git add -u
Run Code Online (Sandbox Code Playgroud)
更新所有更改
Jon*_*ler 91
要非常谨慎git rm .; 它可能删除超过你想要的.当然,你可以恢复,但不必这样做更简单.
最简单的是:
git rm modules/welcome/language/english/kaimonokago_lang.php \
modules/welcome/language/french/kaimonokago_lang.php \
modules/welcome/language/german/kaimonokago_lang.php \
modules/welcome/language/norwegian/kaimonokago_lang.php
Run Code Online (Sandbox Code Playgroud)
您不能使用shell通配符,因为文件不存在,但您可以使用(至少在Bash中):
git rm modules/welcome/language/{english,french,german,norwegian}/kaimonokago_lang.php
Run Code Online (Sandbox Code Playgroud)
或者考虑:
git status | sed -n '/^# *deleted:/s///p' | xargs git rm
Run Code Online (Sandbox Code Playgroud)
这取得了输出git status,默认情况下不打印任何东西(sed -n),但是在开始的行上# deleted:,它摆脱#了deleted:和打印剩下的东西; xargs收集参数并将它们提供给git rm命令.无论名称中的相似性(或不相似性)如何,这都适用于任意数量的文件.
Vij*_*y C 50
ByScripts答案的另一个版本是
git rm $(git ls-files --deleted)
Run Code Online (Sandbox Code Playgroud)
这只会从git中删除已删除的文件.
它也可以用于添加仅修改过的文件.
git add $(git ls-files --modified)
Run Code Online (Sandbox Code Playgroud)
这些命令也适用于Windows的gitbash.
Azi*_*lto 35
更新您所做的所有更改:
git add -u
Run Code Online (Sandbox Code Playgroud)
删除的文件应从未分阶段(通常为红色)更改为分阶段(绿色).然后提交删除已删除的文件:
git commit -m "note"
Run Code Online (Sandbox Code Playgroud)
ByS*_*pts 12
如果你不关心分期修改文件的最佳解决方案是使用git add -u如说mshameers和/或pb2q.
如果你只是想删除已删除的文件,但不要暂存任何修改过的文件,我认为你应该使用ls-files带有该--deleted选项的参数(不需要使用正则表达式或其他复杂的args /选项):
git ls-files --deleted | xargs git rm
Run Code Online (Sandbox Code Playgroud)
是的,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
# ...
Run Code Online (Sandbox Code Playgroud)
然后,你可以提交.
git commit -a 如果你愿意的话,我会一气呵成.
您还可以使用git add -u暂存所有更改,包括所有已删除的文件,然后提交.
小智 7
当我有很多我已经删除但未提交的文件时,你可以git rm在一个节目中使用:
for i in `git status | grep deleted | awk '{print $3}'`; do git rm $i; done
Run Code Online (Sandbox Code Playgroud)
正如问题回答者提到的那样,要小心git rm.
| 归档时间: |
|
| 查看次数: |
136970 次 |
| 最近记录: |