В учебнике Git, который я просматриваю, git commit
используется для хранения сделанных вами изменений.
Что такое git push
?
В учебнике Git, который я просматриваю, git commit
используется для хранения сделанных вами изменений.
Что такое git push
?
В основном git commit
"записывает изменения в репозиторий" while git push
"обновляет удаленные ссылки вместе со связанными объектами". Таким образом, первый используется в связи с вашим локальным репозиторием, в то время как последний используется для взаимодействия с удаленным репозиторием.
Вот хорошая картина из Oliver Steele, которая объясняет модель git и команды:
Подробнее о git push
и git pull
на GitReady.com (статья, о которой я упоминал вначале)
commit: добавление изменений в локальный репозиторий
push: передача последнего фиксации на удаленный сервер
Ну, в основном git commit помещает ваши изменения в локальное репо, а git push отправляет ваши изменения в удаленное местоположение.
git push
используется для добавления коммитов, которые вы сделали в локальном репозитории, к удаленному - вместе с git pull
, это позволяет людям сотрудничать.
Так как git - это система управления распределенной версией, разница заключается в том, что фиксация будет фиксировать изменения в вашем локальном репозитории, тогда как push приведет к изменениям до удаленного репо.
Совершить: снимок | Changeset | History_record | Версия | "Сохранить как" хранилища. Git-репозиторий = серия (дерево) коммитов.
Локальный репозиторий: репозиторий на вашем компьютере.
Удаленный репозиторий: репозиторий на сервере (Github).
git commit
: добавьте новый коммит (последний коммит + поэтапные изменения) в локальный репозиторий. (Все коммиты хранятся в /.git
)
git push
, git pull
: синхронизируйте локальный репозиторий со связанным с ним удаленным репозиторием. push
- применить изменения из локального в удаленный, pull
- применить изменения из удаленного в локальный.
git commit
запишите свои изменения в репозиторий локальный.
git push
обновить репозиторий удаленный с вашими локальными изменениями.
Просто хочу добавить следующие пункты:
Yon не может нажать push, пока вы не совершите коммит, поскольку мы используем git push
для отправки коммитов, сделанных в вашей локальной ветке, в удаленный репозиторий.
Команда git push
принимает два аргумента:
Удаленное имя, например, origin
Имя ветки, например, master
Например:
git push <REMOTENAME> <BRANCHNAME>
git push origin master
Три вещи на заметку:
1) Рабочий каталог ----- папка, в которой находится наш файл кодов
2) Локальный репозиторий ------ Это внутри нашей системы. Когда мы впервые создаем команду COMMIT, создается этот локальный репозиторий. там же, где находится наш рабочий каталог,
Checkit (.git) файл будет создан.
После этого, когда мы делаем коммит, он сохраняет изменения, которые мы вносим в файл Working Directory в локальный репозиторий (.git).
3) Удаленный репозиторий ----- Он расположен вне нашей системы, как и на серверах, расположенных в любой точке мира. как GitHub. Когда мы выполняем команду PUSH, коды из нашего локального репозитория сохраняются в этом удаленном репозитории.
Очень грубая аналогия: если мы сравним git commit
с сохранением отредактированного файла, то git push
будет копировать этот файл в другое место.
Пожалуйста, не вынимайте эту аналогию из этого контекста - фиксация и нажатие не что иное, как сохранение отредактированного файла и его копирование. Тем не менее, это должно быть только для сравнения.
git commit - это не что иное, как официальное сохранение наших изменений, для каждого коммита, который мы даем сообщению коммита, как только мы закончим с коммитами, мы можем переместить его на удаленный компьютер, чтобы увидеть наши изменения глобально
это означает, что мы можем сделать множество коммитов, прежде чем мы отправим их на удаленный сервер (мы можем увидеть список произошедших коммитов и сообщения), git сохраняет каждый коммит с идентификатором коммита, который представляет собой 40-значный код
и я использую git push только тогда, когда я хотел увидеть свои изменения в удаленном режиме (там после того, как я проверю, работает ли мой код в jenkins)
Проще понять использование команд git add
и commit
если представить, что файл журнала поддерживается в вашем репозитории на Github. Типичный файл журнала проекта для меня может выглядеть так:
---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2
Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------
---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on
Я обычно начинаю свой день с запроса git pull
и заканчиваю его запросом git push
. Таким образом, все в дневной записи соответствует тому, что происходит между ними. В течение каждого дня я выполняю одну или несколько логических задач, которые требуют изменения нескольких файлов. Файлы, отредактированные во время этой задачи, перечислены в индексе.
Каждая из этих подзадач (Задача A и Задача B здесь) является отдельными коммитами. Команда git add
добавляет файлы в список "Индекс измененных файлов". Этот процесс также называется постановкой и в действительности записывает измененные файлы и выполненные изменения. Команда git commit
записывает/завершает изменения и соответствующий индексный список вместе с пользовательским сообщением, которое может быть использовано для дальнейшего использования.
Помните, что вы все еще изменяете только локальную копию своего хранилища, а не ту, что на Github. После этого, только когда вы делаете git push
, все эти записанные изменения, а также ваши индексные файлы для каждого коммита, регистрируются в главном репозитории (на Github).
В качестве примера, чтобы получить вторую запись в этом воображаемом лог файле, я бы сделал:
git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push
В двух словах, git add
и git commit
позволяют разбить изменения в главном репозитории на систематические логические подмены. Как уже отмечалось в других ответах и комментариях, у них, конечно, есть много других применений. Тем не менее, это один из наиболее распространенных способов использования Git, который является многоступенчатой системой контроля версий в отличие от других популярных систем, таких как Svn.
Нажмите: нажмите на ветку для удаленного, вместе с необходимыми коммитами и объекты. Создает именованную ветку в удаленном репо, если она не существует.
Фиксация: запишите изменения в локальный репозиторий, зафиксируйте поэтапный снимок. Он отслеживает изменения, сделанные между каждым коммитом.
Когда вы фиксируете свои изменения, вы сохраняете изменения как один логический набор в локальном репозитории. Вы можете сделать это несколько раз, не нажимая. Пока они не вытолкнуты, они не покинут ваш локальный репозиторий, а это значит, что удаленный репозиторий еще не будет иметь эти наборы изменений, поэтому, когда другие люди извлекают данные из удаленного репозитория, ваши коммиты не будут извлечены.
Когда вы нажимаете, все коммиты, сделанные вами в вашем локальном репозитории, будут перенесены в удаленный репозиторий, поэтому, когда другие разработчики, которые совместно используют этот удаленный репозиторий, извлекают ваши изменения в свои локальные репозитории.
в терминах непрофессионала, git commit
- это шаг до git push
, который вы запускаете в этом порядке для успешного git вашего файла в github.
Ну, в основном git commit переносит ваши изменения в локальное репо, а git push отправляет ваши изменения в удаленное местоположение. Поскольку git является распределенной системой управления версиями, разница заключается в том, что фиксация будет фиксировать изменения в вашем локальном репозитории, тогда как push будет нажимать изменения до удаленного репо
source Google
http://gitref.org/basic/ эта ссылка будет очень полезна.
git commit
заключается в фиксации файлов, расположенных в локальном репо. git push
- ускоренная пересылка слияния главной ветки локальной стороны с удаленной главной ветвью. Но слияние не всегда будет успешным. Если появляется отказ, вы должны pull
, чтобы вы могли сделать успешный git push
.