git pull
= git fetch
с последующим git merge
(или другой командой Git). git fetch
означает получение коммитов из другого Git . git merge
означает объединить коммиты, которые у меня уже есть в моем хранилище .
Если у вас еще нет коммитов, вам нужен шаг 2. В вашем случае, у вас do есть коммиты, поэтому все, что вам нужно, это git merge
(или другая команда, которую вы собираетесь запустить git pull
в качестве второй из двух команд).
Давайте добавим к этому git push
:
git push
означает
отправить коммиты другому Git . Это так же близко, как и к противоположности
git fetch
. Его противоположность:
, а не git pull
:
git pull
- это комбинация
комбинация ;
git push
и
git fetch
являются двумя основными командами передачи-фиксации-из-одного-хранилища в другое.
Обратите внимание, что когда вы используете git fetch
, вы получаете коммиты из их Git- другой Git, который обычно называется origin
- и помещает их в свой репозиторий, но затем также label эти коммиты с именами, такими как origin/master
и origin/feature
. Эти метки, которые мы можем назвать имена для удаленного слежения , помнят, что их Git - тот, что на origin
- использовал имя master
или имя feature
дляпомните эти конкретные коммиты.
Если git push
отличается, то немного отличается тем, что после отправки новых коммитов в их хранилище, ваш Git просит их Git установить их ветка имен. То есть, если вы запускаете git push origin master
, ваш Git отправляет своему Git любые новые коммиты, которые у вас есть, которые им не нужны (и что им нужно), а затем ваш Git говорит: теперь, когда у вас есть коммит a123456...
- или независимо от того, какой у него хэш-идентификатор - теперь, когда у вас есть фиксация, установите ваш master
, чтобы идентифицировать эту фиксацию. Имя удаленного отслеживания не задействовано:ваш Git говорит своему Git установить ответвления имён.
Всегда безопасно запускать git fetch
. Он либо получает некоторые новые коммиты (и не затрагивает ни одну из ваших веток), либо не принимает ничего нового (и при этом не затрагивает ни одну из ваших ветвей).
Это другой Git решит, нравится ли ему ваш git push
: вы отправляете его коммиты, если это необходимо, затем попросите его задать имена веток, что он и сделает, если они считают, что это безопасно,Вы можете отправить им команду - установить имена веток! - используя --force
, чтобы переопределить ее, если они считают, что это небезопасно, и вы думаете, что знаете лучше, но разумно убедиться, что вы действительно знаете лучше, сначала.
Когда и насколько безопасно запускать git merge
- это то, что вы должны решить самостоятельно. К сожалению, если вы используете git pull
, вы решили, что это безопасно, независимо от того, что происходит на шаге git fetch
. Иногда это все равно безопасно, особенно если вы также контролируете другой репозиторий Git, но я предпочитаю избегать git pull
в целом. Я предпочитаю разбивать его на две составные части. Это дает мне возможность взглянуть на то, что на самом деле git fetch
было извлечено, используя git log
, прежде чем я решу полностью слить, перебазировать или что-то еще (возможно, даже принудительный толчок, хотя это было бы крайне редко).