How to add and commit removals made with “rm” instead of “git rm”?

心已入冬 提交于 2019-12-29 03:33:06

问题


I deleted a bunch of files and directories from a Git repository using rm, the Finder, etc.

I'm looking for a Git command that'll record these to the index as marked for removal, as if I had called git rm on them.

I understand git add -u will do this, along with a bunch of other things. I'd like my command to exclusively handle removals.


回答1:


Without spaces in filenames:

$ git rm `git ls-files -d`

More robust:

$ git ls-files -z -d | xargs -0 --no-run-if-empty git rm



回答2:


Take a look what Jonio C Hamano wrote in "Re: [PATCH 1/2] Documentation: 'git add -A' can remove files" post at git mailing list, namely that this question looks like XY problem (you are asking about assumed solution Y to the problem, instead about the problem X itself). The solution to problem (if it is really "XY problem" situation) might be:

  • git commit -a, which would automatically pick up deletions, committing current state of tracked files in working directory

  • git add -A, which would add not ignored untracked files and remove no longer existing files, e.g. if you want to create commit from sideways update of working directory, e.g. unpacking a snapshot or result of rsync.

Nevertheless if what you ask is a problem (and not solution), then as you can see from other answers there are tools in place to do it.




回答3:


Charles Bailey's answer nudged me towards this, but I still welcome something shorter.

$ git diff --name-only --diff-filter=D | xargs git rm



回答4:


In Git 2.0, git add behaves like git add --ignore-removal <pathspec> which ignores paths you removed from your working tree.

You can use git add --all <pathspec> to record the removals.

Run git status to check the paths you removed from your working tree.




回答5:


This command will give you a list of all deleted files which will be forward to git rm. So all files will be removed. If no deleted files were found, nothing will be happen:

git ls-files -z -d | xargs -0 --no-run-if-empty git rm



来源:https://stackoverflow.com/questions/1856654/how-to-add-and-commit-removals-made-with-rm-instead-of-git-rm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!