Вопрос: Удаление нескольких файлов из репозитория Git, которые уже были удалены с диска


У меня есть Git repo, что я удалил четыре файла из rm( не git rm), и мой статус Git выглядит следующим образом:

#    deleted:    file1.txt
#    deleted:    file2.txt
#    deleted:    file3.txt
#    deleted:    file4.txt

Как удалить эти файлы из Git без необходимости вручную просматривать и добавлять каждый файл следующим образом:

git rm file1 file2 file3 file4

В идеале я ищу что-то, что работает так же, как git add .делает, если возможно.


1219


источник


Ответы:


Для Git 1.x

$ git add -u

Это означает, что git автоматически сценирует отслеживаемые файлы, включая удаление ранее отслеженных файлов.

Для Git 2.0

Чтобы выполнить все свое рабочее дерево:

$ git add -u :/

Чтобы выполнить только текущий путь:

$ git add -u .

2194



git ls-files --deleted -z | xargs -0 git rm 

может быть то, что вы ищете .. это работает для меня ..


1331



Вы можете использовать

git add -u

Чтобы добавить удаленные файлы в промежуточную область, выполните их

git commit -m "Deleted files manually"

721



Если вы просто запускаете:

git add -u

git обновит свой индекс, чтобы знать, что файлы, которые вы удалили, фактически должны быть частью следующей фиксации. Затем вы можете запустить «git commit», чтобы проверить это изменение.

Или, если вы запустите:

git commit -a

Он автоматически примет эти изменения (и любые другие) и зафиксирует их.

Обновить : Если вы хотите только добавить удаленные файлы, попробуйте:

git ls-files --deleted -z | xargs -0 git rm
git commit

353



You're probably looking for -A:

git add -A

this is similar to git add -u, but also adds new files. This is roughly the equivalent of hg's addremove command (although the move detection is automatic).


162



To stage only the deleted files:

for x in `git status | grep deleted | awk '{print $3}'`; do git rm $x; done

Or (the xargs way):

git status | awk '/deleted/ {print $3}' | xargs git rm

You can alias your preferred command set for convenient later use.


91



git rm test.txt

Before or after you deleted the actual file.


58



By using git-add with '--all' or '--update' options you may get more than you wanted. New and/or modified files will also be added to the index. I have a bash alias setup for when I want to remove deleted files from git without touching other files:

alias grma='git ls-files --deleted -z | xargs -0 git rm'

All files that have been removed from the file system are added to the index as deleted.


46



Not that it really matters, but I disagree with the chose answer:

git add -u 

... will remove files from the index if the corresponding files in the working tree have been removed, but it will also stage the modified new contents of tracked files.

git rm $(git ls-files --deleted)

... on the other hand will only rm the deleted files that were tracked.

So the latter in my view is the better option.


37



If those are the only changes, you can simply do

git commit -a

to commit all changes. That will include deleted files.


27



git ls-files --deleted | xargs git rm 

is the best option to add only deleted files.

Here is some other options.

git add .  => Add all (tracked and modified)/new files in the working tree.

git add -u => Add all modified/removed files which are tracked.

git add -A => Add all (tracked and modified)/(tracked and removed)/new files in the working tree.

git commit -a -m "commit message" - Add and commit modified/removed files which are tracked.

18



git add -u

-u --update Only match against already tracked files in the index rather than the working tree. That means that it will never stage new files, but that it will stage modified new contents of tracked files and that it will remove files from the index if the corresponding files in the working tree have been removed.

If no is given, default to "."; in other words, update all tracked files in the current directory and its subdirectories.


14