Должен ли я когда-нибудь git тянуть больше одного раза? - PullRequest
0 голосов
/ 10 марта 2020

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

Нужно ли мне снова извлекать из этой же ветки, или файлы, которые я могу отредактировать, чтобы потом сделать pu sh на более позднем этапе?

Должен ли я только тянуть еще раз, если я знаю, что кто-то еще внес изменения в эту ветку с момента моего первого обращения?

Ответы [ 3 ]

3 голосов
/ 10 марта 2020

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

2 голосов
/ 10 марта 2020

Git не общается с сетью, если вы явно не скажете это с помощью команды, такой как push, fetch или pull (которая просто fetch + merge). Так что да, вам нужно периодически pull или fetch, чтобы увидеть изменения в удаленном хранилище.

Поскольку вы смогли сделать sh, мы знаем, что больше не было внесено никаких изменений в feature на origin. git push не объединится для вас, когда вы наберете sh, вы должны быть в курсе.

Нужно ли мне снова извлекать из этой же ветки, или файлы, которые мне подходят потом вносить изменения в pu sh?

Что делает Git "распределенным", так это то, что вы можете продолжать вносить изменения локально, а затем согласовывать их с любыми изменениями в восходящем направлении. Если вы вносите изменения локально, а другие вносят изменения удаленно, когда вы git pull, эти изменения будут объединены вместе. git pull - это git fetch плюс git merge.

Вот пример, где некоторые изменения были внесены в ветку удаленно (фиксирует F и G), а также локально (фиксирует 1 и 2).

origin

A - B - C [master]
     \
      D - E - F - G [feature]

local

          [origin/master]
A - B - C [master]
     \
      D - E [origin/feature]
           \
            1 - 2 [feature]

Если вы попытаетесь сделать sh это, Git не допустит этого. Ваша ветка "разошлась". git push не сольется для вас. Вам нужно git pull, чтобы получить актуальную информацию.

Если вы git pull пока feature извлечены Git будет git fetch последняя версия, а затем git merge origin/feature.

# Illustrating `git pull` as two steps

$ git fetch origin

          [origin/master]
A - B - C [master]
     \
      D - E - F - G [origin/feature]
           \
            1 - 2 [feature]

$ git merge origin/feature

          [origin/master]
A - B - C [master]
     \
      D - E - F - G [origin/feature]
           \       \
            1 - 2 - M [feature]

Теперь вы в курсе событий и в безопасности: pu sh.

Если вы хотите проверять изменения, но не объединять их, можно периодически git fetch.

2 голосов
/ 10 марта 2020

git pull извлекает изменения с пульта и интегрирует их в вашу ветку. Если на пульте нет изменений, которые были бы «новыми» для вашей ветви, вам не нужно использовать pull.

Как правило, в gits design допускается совместная работа любого количества разработчиков. одна и та же ветка (и), даже с относительно слабой связью между ними. Поэтому может быть полезно, чтобы вы периодически выполняли извлечение, если у вас есть другие активные разработчики в вашей ветке, чтобы ваши изменения не слишком сильно расходились с они без периодов c разрешение слияния.

Но единственный раз, когда у вас есть до pull, это когда (a) ваша ветвь и удаленная ветвь фактически расходятся (т.е. каждая имеет изменения, которых у другого еще нет), и (b) вы хотите изменить свои изменения sh. Если вы попытаетесь изменить ситуацию sh, не тянув в этой ситуации, git предупредит вас и откажет от толчка [1 ].

Так что некоторые люди имеют привычку тянуть перед толчком, а другие просто пу sh и пусть git говорят им, если они должны тянуть первыми. И если толчки часты и / или вы склонны работать на изолированных ветках, тогда, может быть, это все, что вам нужно от тяги; или, опять же, может быть, вы работаете так, что более частое вытягивание облегчит работу по слиянию. Это то, что вы и ваша команда должны разработать для своего проекта.


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

...