Управление изменениями файлов с помощью Git

{title}

Git интересным образом отслеживает изменения файлов . Хотя может показаться, что вы ищете изменения в каждом из них, на самом деле вы несете файл с именем index, в который вы вставляете происходящие изменения. Таким образом, просто прочитав индексный файл, вы сможете узнать, какие файлы и какой контент в них были изменены.

Как только мы понимаем эту концепцию того, как Git переносит зарегистрированные изменения, мы можем начать получать реальную выгоду от инструмента, поскольку именно в это время мы можем начать использовать различные команды для внесения изменений в наш репозиторий и управления ими. с логической точки зрения.

Классификация файлов в Git


Прежде чем перейти к более глубоким пунктам, мы должны посмотреть, как Git классифицирует свои файлы. Это означает не классификацию по типу файла из-за его расширения, а по состоянию файла относительно нашего репозитория и его индекса .

По сути, у нас есть три типа файлов в GIT, каждый из которых имеет свой собственный момент внутри репозитория, давайте посмотрим, что это такое:

гусеничный

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

 git добавить имя файла 

игнорируются

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

несопровождаемый

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

Практический пример классификации файлов


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

1 - Мы создадим новую папку на нашем компьютере под названием Git files .

2 - После того, как папка будет создана, мы введем ее из нашей консоли, и там мы выполним команду git init, а затем мы увидим git status, чтобы увидеть состояние нашего репозитория, давайте посмотрим, как выглядит приложение предыдущих команд:

{title}

3 - После того, как мы выполнили предыдущий шаг, у нас уже будет инициализированный и готовый к работе репозиторий Git, затем мы можем создать новый файл в этой папке, и мы снова создадим git-статус, чтобы увидеть изменения, у нас должен быть наш новый файл по классификации без отслеживания .

4 - Мы повторим предыдущий шаг и создадим новый файл, если мы увидим результат выполнения git status снова, мы посчитаем оба файла, давайте посмотрим:

{title}

5 - Теперь мы собираемся создать новый файл с именем .gitignore, обратите внимание на точку перед файлом, а внутри мы поместим имя одного из наших предыдущих файлов, снова сделаем состояние git и увидим, что теперь мы получаем только тот файл, который не находится в он .gitignore и файл .gitignore, который мы только что создали:

$config[ads_text5] not found

{title}

6 - Тогда мы сделаем добавление мерзавца. чтобы добавить все наши файлы и, наконец, мы выполним с ним git commit -m «начальный коммит», добавив наши файлы в хранилище, если мы внесем изменение в файл, который не поместим в .gitignore, и сохраним его, если мы снова запустим git status, мы увидим к файлу в статусе или классификации отслеживаются .

{title}

Команда git add


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

$config[ads_text6] not found

Как это использовать?

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

$config[ads_text5] not found

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

Использование git add


В нашей папке Git files, которую мы создали в предыдущем примере урока, мы добавим новый файл, в который мы поместим новый File3, а затем в существующий файл, которого нет в нем .gitignore, мы внесем изменения.

С помощью этого мы хотим проверить, как использовать нашу команду git add, посмотрим, как это выглядит в нашей командной консоли:

$config[ads_text5] not found

{title}

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

Теперь мы собираемся добавить новый файл в репозиторий, но мы не будем делать это с существующим файлом или файлом, который мы ранее модифицировали. Чтобы сделать это, мы просто должны сделать git add filename . Тогда мы будем делать git status . Давайте посмотрим:

{title}

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

$config[ads_text6] not found

Удалить файлы репозитория


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

Необходимо принять во внимание две вещи: мы можем удалить индексный файл из нашего репозитория, но сохранить этот файл в системе нашей папки, поэтому, если мы сделаем состояние git, мы увидим его снова доступным. Или, если мы не можем удалить файл как из нашей папки, так и из индекса нашего репозитория, для этого мы можем использовать команду git rm .

Команда git rm - -cached


Когда мы используем команду rm с добавленной опцией cached, мы удаляем этот файл из индекса, однако мы будем хранить его на нашем компьютере, эта команда часто используется, когда мы не хотим добавлять указанный файл в наш репозиторий, но нам нужно сохранить Другие изменения.

Чтобы использовать его, мы просто делаем команду, когда мы уже добавили файл с помощью git add, давайте посмотрим, как это выглядит в нашей командной консоли:

{title}

Мы заметили, что новый файл File3, который мы добавили в наш репозиторий, теперь отсутствует и имеет неотслеживаемую классификацию.

Команда Git rm


Теперь давайте посмотрим, как использовать команду git rm, эта команда гораздо более мощная, поскольку она напрямую удаляет файл индекса и папки, поэтому мы должны быть осторожны, когда решаем использовать ее в нашем репозитории, очень вероятно, После применения мы не можем восстановить изменения.

Давайте посмотрим в следующем примере, как это работает, когда мы применяем его к файлу, в этом случае мы добавим новый File3 с помощью git add, а затем применим этот git rm :

{title}

Мы видим, что когда мы делаем это напрямую, git показывает нам ошибку и просит нас сделать принудительное удаление при добавлении в инструкцию параметра -f, это связано с важностью изменения, мы, наконец, сделаем состояние git и заметим, что этот файл исчез из нашего хранилище в полном объеме.

$config[ads_text5] not found

{title}

Больше от .gitignore


Мы могли видеть, что мы можем добавить определенный файл в наш файл .gitignore, однако, когда мы работаем в среде, где мы обрабатываем сотни или, может быть, тысячи файлов, это не очень практично, поэтому мы можем использовать шаблоны.

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

* .webp будет игнорировать все файлы .webp нашего проекта, но если мы хотим сохранить отслеживание одного из них, мы должны только добавить:

 ! filename.webp 
Это просто, у нас есть сильная и сложная структура, которая позволяет нам поддерживать наш репозиторий организованным.

$config[ads_text6] not found

Завершая этот урок, мы подробно рассмотрели, как Git переносит или обрабатывает изменения в наших файлах, и важно справиться с этим вопросом, поскольку с этим мы можем более эффективно работать в оборудовании, где Git обрабатывается. Как контроллер версий.