Предыдущий ролик Следующий ролик  

Видео урок: Перемещение и переименовывание файлов

Git: обучение основам

В этом ролике мы поговорим о том, как перемещать и переименовывать файлы. И наподобие удаления файлов, есть два способа сделать это. Первый заключается в том, что мы можем просто зайти в обычную операционную систему, и все переместить и переименовать, а затем вернуться и сказать Git об этих изменениях, и сказать ему отправить эти изменения в буфер. Второй заключается в том, чтобы сделать это из Git и позволить Git обработать все для нас в операционной системе, так же как мы делали это с удалением. Давайте рассмотрим оба эти способа. Во-первых, давайте посмотрим, что осталось. Итак, у нас есть first_file.txt.

Давайте поменяем его имя на primary_file.txt. Мы его переименовали, и сделали мы это из файловой системы. Давайте снова переключимся на Git и спросим его, какой сейчас статус. Обратите внимание, что он не говорит нам, что был переименованный файл, он говорит нам, что это файл, который был удален, а потом стал новый файл, который не отслеживается. Вот так он видит то, что случилось. Он рассматривает факт, что файла, который он ожидал найти, здесь нет, а вместо этого здесь находится другой файл.

Давайте отправим эти изменения в буфер, git add primary_file, это новый файл, и git remove first_file.txt. Теперь оба изменения находятся в буфере, пишем git status. Но сейчас Git говорит - о, я обратил внимание, что файл переименован. Таким образом, как только он попадает в буфер, Git сравнивает данные между двумя файлами и говорит - о, они очень близки. Они не обязательно должны быть абсолютно одинаковыми, некоторые изменения также могут присутствовать.

Я думаю, порог доходит до 50%. Если данные на 50% одинаковы между файлами, Git говорит - о, хорошо, это один и тот же файл. И вот он переименован с first_file.txt на primary_file.txt. И, конечно, мы знаем, как закоммитить это изменение, используя обычный коммит. А теперь давайте посмотрим, как Git может обработать все для нас. Переименование и перемещение являются одинаковыми вещами в Git. Подобным образом все это работает в Unix. Если мы хотим переименовать второй файл, пишем git mv second_file.txt в secondary_file.txt.

Таким образом, мы перемещаем second_file.txt в secondary_file.txt, что на самом деле является тем же, что и переименование. И так мы говорим Git сделать это. Если сейчас мы посмотрим в операционную систему, то мы увидим, что и здесь произошло изменение. А если мы напишем git status, мы увидим, что Git добавил файл в буфер, так же как было и с удалением. Он говорит - все верно, я меняю файл в файловой системе и добавляю его в буфер, все за один шаг. Я считаю, что и удаление, и переименовывание, и перемещение файлов лучше оставить Git, потому что Git позаботится о том, чтобы добавить все и в буфер.

Теперь, если вы делаете очень много изменений и перемещаете файлы в файловой системе, сначала лучше закончить здесь, а в Git вернуться позже. Но если вы делаете одно изменение, лучше всего все же позволить Git все обработать и добавить это изменение в буфер. Теперь, я сказал, что перемещение - это тот же процесс, и до сих пор у нас не было возможности сделать это. Давайте создадим новую папку и назовем ее first_directory, и давайте переместим третий файл в эту директорию.

Пишем git mv, и мы собираемся переместить third_file.txt, мы перемещаем его в first_directory/third_file.txt. Одновременно мы можем его переименовать, потому что, как я и сказал, перемещение и переименование являются одинаковыми вещами, теперь пишем git status, и вы видите, что Git говорит нам, что файл был переименован, но переименование на самом деле является перемещением в эту новую папку. В общем, переименование и перемещение - это синонимы. В большинстве случаев лучше перемещать и переименовывать файлы из Git, а не из файловой системы.

А теперь давайте закоммитим эти изменения, пишем commit, а сообщение пусть будет таким - Reorganized file structure by moving files. Вот и все. Эти переименования перечислены здесь, git status показывает нам, что наша рабочая директория чиста, и теперь рабочая директория находится в том же состоянии, что и репозиторий.