2017-02-19 3 views
0

Я сохраняю свою работу на GitHub. Обычно, я использую следующие команды:Удаление файла в каталоге git hub

git add * # To save all files 
git commit -m "a commit" 
git push 

Он отлично работает за исключением одного случая: Допустим, мой репозиторий имеет два файла, file1.c и file2.c.

Я использую выше команды, все сохраняется. Затем, я удаляю file2.c, остается только file1.c.

Я снова запускаю команды, и нет ошибки, но когда я клонирую репозиторий, оба файла будут там.

Как удалить эти файлы из моего репозитория?

ответ

3

Вместо git add * (which is expanded by the shell) попробовать:

rm file2 
rm file3 
... 
git add . 
git commit -m "record modified files, remove files" 
git push 

Это должно принять участие в добавлении и удалении файлов, since Git 2.0 (where git add . is like git add -A)

Это будет запись ваших 20 удаленных файлов и позволит вам нажать это.

git add . будет автоматически определять файлы, модифицированные, добавленные или удаленные.
В отличие от git add *, который управляется оболочкой, разлагая «*» к файлам, замеченных оболочки (т.е., по определению, не удаленные файлы!)

+0

И знаете ли вы, что не использовать rm file2 ... Если я не знаю имя всех удаленных файлов или не хочу их отслеживать? – f42

+0

@ f42 вам не обязательно знать имя удаляемого файла: 'git add .' обнаружит их для вас :) – VonC

+0

@ f42 Я отредактировал свой ответ, чтобы объяснить, почему в других ответах отсутствует точка. Ваша проблема связана с использованием «*», как я подробно изложу в своем редактировании. – VonC

1

Чтобы удалить файл с мерзавцем, используйте следующую команду:

git rm file2.c 

Это удалит файл как в файловой системе, так и в хранилище. Вы можете совершать и раздвинуть изменения, как обычно:

git commit -m "Removed file2.c" 
git push 

Если вы удалили много файлов без git rm, вы можете удалить все файлы из хранилища, а затем добавить их снова:

git rm --cached * 
git add * 

--cached удаляет файлы только из репозитория, они хранятся в файловой системе, поэтому вы можете добавить их обратно с помощью git add.

+0

Спасибо за команду, но как сделать, если у меня есть 20 файлов для удаления? У вас есть способ просто сохранить работу, и если файл отсутствует, автоматически удалите его из репозитория? – f42

+0

Отлично;) спасибо – f42

1
git rm file1.c 
git add * 
git commit -m "message" 
git push 
+0

Пожалуйста, объясните разницу между вашими линиями и теми, которые использует OP –

+0

. То же самое. Добавлено в то же время :) – Specas

1

Я думаю, что вы можете использовать Git гт, чтобы удалить файл или папку, как вы используете гт в Linux ~

, например, запустить

  • мерзавец гт путь/file2.c
  • git status

вы увидите файл2.c удален в вашем репозитории

затем зафиксировать его в удаленном хранилище

  • мерзавца совершить -м "дель: удалить файл file2.c"
Смежные вопросы