В SVN удаление чего-либо из файловой системы напрямую (а не использование svn) создавало множество головных болей.
Я не нашел, чтобы это было проблемой при использовании git
, но я заметил, что у git есть своя собственная rm
реализация ( git rm
).
В чем разница между rm
и git rm
?
git reset --hard
а затем выполнить проверку мастера, чтобы выйти из оторванного состояния головы, потому что я знал, что у меня не было никаких незафиксированных изменений. Если вы не зафиксировали свои изменения, возможно, вы захотите сделать git stash, но я относительно новичок в git, поэтому не знаю точной команды. Если вы приехали сюда в или после 2014 года, я надеюсь, что этот ответ был вам полезен.rm
(вместоgit rm
) и удалил много файлов, используя его, и теперь не хочуgit
отслеживать их. Есть ли способ отменить изменения? Я хочуgit
наступить на то,rm
что удалено, так как я не использовалgit rm
в первую очередь.Удаление файлов с помощью использования
rm
не является проблемой само по себе, но если вы затем захотите зафиксировать, что файл был удален, вам придется всеgit rm
равно сделать , так что вы могли бы сделать это таким же образом.Кроме того, в зависимости от вашей оболочки,
git rm
после удаления файла, вы не получите завершение табуляции, поэтому вам придется прописать путь самостоятельно, тогда как если вы,git rm
пока файл еще существует, завершение табуляции будет работать как обычно.источник
git rm
удалит файл из индекса и рабочего каталога (только индекс, если вы его использовали--cached
), так что удаление будет подготовлено для следующей фиксации.источник
Однако, если вы в конечном итоге используете rm вместо git rm. Вы можете пропустить git add и напрямую зафиксировать изменения, используя:
git commit -a
источник
Вот как вы можете удалить файл с помощью,
rm -f
а затем удалить его из индекса с помощьюgit rm
Однако вы можете сделать это все сразу
git rm
источник
При использовании git rm удаление будет частью вашего следующего коммита. Так что, если вы хотите внести изменения, вы должны использовать git rm
источник
В добавление к ответу Энди есть дополнительная утилита для
git rm
:Безопасность : когда
git rm
вместо этогоrm
Git блокирует удаление, если есть расхождение междуHEAD
версией файла и промежуточным индексом или версией рабочего дерева. Этот блок является механизмом безопасности для предотвращения удаления текущих изменений.Защита :
git rm --dry-run
. Эта опция является защитой, которая выполнитgit rm
команду, но не удалит файлы. Вместо этого он выведет, какие файлы он бы удалил.источник