Зачем добавлять и коммитить в git?

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


Со всеми IDE, которые я пробовал, для фиксации файла достаточно одного щелчка мыши. Это означает, что IDE сочетает в себе «добавить» и «фиксировать», верно?!

И поэтому я не могу найти никакой причины, по которой имело бы смысл программировать обе команды.


person anben    schedule 13.03.2019    source источник
comment
См. также softwareengineering.stackexchange.com/q/69178/197871.   -  person Chris    schedule 13.03.2019
comment
@Chris, вероятно, мог бы оставить мой комментарий к stackoverflow .com/questions/6143285/git-add-vs-push-vs-commit это также полезный ресурс, особенно принятый ответ   -  person Samuel Hulla    schedule 13.03.2019
comment
Один пример, когда это полезно, когда вы хотите зафиксировать только часть файла.   -  person Philippe    schedule 13.03.2019


Ответы (3)


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

Например, в веб-разработке, когда вы закончили создание новой страницы, вы, вероятно, изменили несколько файлов. Ваше сообщение фиксации может быть: Add index page которое содержит файлы:

  • index.html

  • script.js

  • ...

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

person Jelmer Beerling    schedule 13.03.2019
comment
Вы фиксируете не файлы и не изменения, а снимки всего дерева репо. Не придираться, я согласен с общим смыслом вашего ответа, но первое предложение может ввести в заблуждение некоторых людей. - person RomainValeri; 13.03.2019
comment
Полностью согласен, перечитывая это, действительно вводит в заблуждение - person Jelmer Beerling; 13.03.2019

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

Вы можете игнорировать его существование, если используете определенные IDE или постоянно выполняете коммит с -a. Некоторые люди делают. В самых простых контекстах это, вероятно, неплохой вариант.

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

Подробнее здесь:

Что ТОЧНО содержит индекс git?

а может там?

Понимание git — Индекс

person RomainValeri    schedule 13.03.2019

Между git и другими облачными / svn системы репозитория. Одним из них является тот факт, что git имеет так- называется "staging area".

git add

  • В git перед обновлением файла в вашем репозитории, сначала он добавляется к так называемому staging area. Это делается именно так, как следует из названия функции, с помощью команды git add.

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


git commit

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

  • Опять же, имя команды образовано от описанного действия, поэтому в данном случае это будет git commit, которое фиксирует изменения, которые вы предложили в своей промежуточной области (через git add).


Таким образом, разница в том, что если вы используете интернет-браузер для загрузки файлов непосредственно в репозиторий, вы, по сути, пропускаете этап git add и выполняете git commit файлы сразу же в репозиторий.

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

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

Для получения дополнительной информации (не только) git add и git commit я настоятельно рекомендую изучить это руководство. По крайней мере, лично я научился свободно пользоваться git из только этот ресурс

person Samuel Hulla    schedule 13.03.2019