В чем разница между мерзавцем add
, push
и commit
?
Просто немного запутался, исходящий из SVN, где «update» будет «добавлять» материал, а фиксация выполняет «push» и также «добавляет»
В git есть все разные функции. Надеюсь на какое-то объяснение из вашего опыта.
Ответы:
git add
добавляет ваши измененные файлы в очередь для фиксации позже . Файлы не зафиксированыgit commit
фиксирует добавленные файлы и создает новую ревизию с журналом ... Если вы не добавите никаких файлов, git ничего не зафиксирует. Вы можете комбинировать оба действия сgit commit -a
git push
отправляет ваши изменения в удаленный репозиторий.Этот рисунок из этой шпаргалки по git дает хорошее представление о рабочем процессе.
git add
нет на рисунке, потому что предлагаемый способ фиксации является комбинированнымgit commit -a
, но вы можете мысленно добавитьgit add
в блок изменений, чтобы понять поток.Наконец, причина, по которой
push
есть отдельная команда, связанаgit
с философией России.git
- это распределенная система управления версиями, а ваш локальный рабочий каталог - это ваш репозиторий! Все изменения, которые вы совершаете, мгновенно отражаются и записываются.push
используется только для обновления удаленного репо (которым вы можете поделиться с другими), когда вы закончите с тем, над чем работаете. Это изящный способ работать и сохранять изменения локально (без накладных расходов на сеть) и обновлять их только тогда, когда вы хотите, а не при каждой фиксации. Это косвенно приводит к упрощению коммитов / ветвлений и т. Д. (Почему бы и нет, правда? Сколько это вам стоит?), Что приводит к большему количеству точек сохранения без вмешательства в репозиторий.источник
git add
выбирает измененияgit commit
записывает изменения ЛОКАЛЬНОgit push
разделяет измененияисточник
git add
добавляет файлы в индекс Git, который является промежуточной областью для объектов, подготовленных к фиксации.git commit
фиксирует файлы из индекса в репозиторий,git commit -a
это ярлык для добавления всех измененных отслеживаемых файлов в индекс первым.git push
отправляет все ожидающие изменения в удаленный репозиторий, которому сопоставлена ваша ветка (например, на GitHub).Чтобы понять Git, вам нужно приложить больше усилий, чем просто просмотреть документацию, но это определенно того стоит. Просто не пытайтесь сопоставлять команды Git напрямую с Subversion, поскольку у большинства из них нет прямого аналога.
источник
Я был сбит с толку тем, что на самом деле делает «add». Я только что прочитал очень поучительный абзац из книги Git Pro, который хотел бы добавить сюда, потому что он проясняет вещи.
«Оказывается, Git обрабатывает файл точно так же, как когда вы запускаете команду git add. Если вы сделаете коммит сейчас, то версия файла benchmarks.rb, которая была при последнем запуске команды git add, будет соответствовать тому, как он войдет в фиксацию, а не версии файла, как он выглядит в вашем рабочем каталоге при запуске git commit. Если вы измените файл после запуска git add, вам придется снова запустить git add, чтобы подготовить последнюю версию файла: »
Выдержка из: Чакон, Скотт. «Pro Git». Springer, 2009-08-19T00: 00: 00 + 00: 00. iBooks. Этот материал может быть защищен авторским правом.
источник
add сообщает git начать отслеживание файла.
commit фиксирует ваши текущие изменения в вашем локальном репозитории
push подталкивает вас к локальному репо вверх по течению.
источник
Я считаю это изображение очень значимым:
(от: Оливер Стил - Мой рабочий процесс Git (2008) )
источник
Очень хороший PDF-файл о многих секретах GIT.
Добавление такое же, как и в svn add (но иногда оно используется для отметки файла как разрешенного).
Фиксация также такая же, как у svn, но она фиксирует изменения в вашем локальном репозитории.
источник
add -in git используется, чтобы сообщить git, какие файлы мы хотим зафиксировать, он помещает файлы в промежуточную область
commit- in git используется для сохранения файлов на локальном компьютере, поэтому, если мы внесем какие-либо изменения или даже удалим файлы, мы все равно сможем восстановить наши зафиксированные файлы
push - если мы фиксируем наши файлы на локальном компьютере, они все равно могут быть потеряны, если наш локальный компьютер будет потерян, поврежден и т. д., чтобы сохранить наши файлы в безопасности или поделиться нашими файлами, обычно мы хотим сохранить наши файлы на удаленном репозиторий вроде Github. Чтобы сэкономить на удаленных репозиториях, мы используем push
пример Создание файла с именем index.html git add index.html
Фиксация файла, который является поэтапным git commit -m 'имя вашего коммита'
Отправка файла в Github git push origin master
источник