我使用rm
、Finder等工具从Git仓库中删除了一堆文件和目录。
我正在寻找一个Git命令,将这些标记为需要移除,并记录到索引中,就像我调用了git rm
一样。
我知道git add -u
可以做到这一点,并且还有其他一些功能。但我希望我的命令只处理移除操作。
我使用rm
、Finder等工具从Git仓库中删除了一堆文件和目录。
我正在寻找一个Git命令,将这些标记为需要移除,并记录到索引中,就像我调用了git rm
一样。
我知道git add -u
可以做到这一点,并且还有其他一些功能。但我希望我的命令只处理移除操作。
文件名中不包含空格:
$ git rm `git ls-files -d`
更加健壮:
$ git ls-files -z -d | xargs -0 --no-run-if-empty git rm
git commit -a
,它会自动获取删除,在工作目录中跟踪文件的当前状态。
git add -A
,它会添加未被忽略的未跟踪文件并删除不再存在的文件,例如,如果您想从工作目录的侧面更新(例如解压快照或rsync的结果)创建提交。
然而,如果你所问的是一个问题(而不是解决方案),那么从其他答案中可以看出已经有相应的工具可用。
$ git diff --name-only --diff-filter=D | xargs git rm
git add
的行为类似于git add --ignore-removal <pathspec>
,它会忽略你从工作目录中删除的路径。git add --all <pathspec>
来记录删除操作。git status
以检查您从工作树中删除的路径。这个命令会给你一个所有已删除文件的列表,然后将其转发到 git rm 命令,以便删除所有文件。如果没有找到已删除文件,则不会执行任何操作:
git ls-files -z -d | xargs -0 --no-run-if-empty git rm
git rm
可以暂存被删除的文件,只是在寻找一种通过单个调用git rm
来暂存所有已删除文件的方法。 - user456814