Подтвердить что ты не робот

Git тянуть без проверки?

Я использую команду git pull и другие команды из ветки, в которой я работаю. Но я создал сервер разработки, над которым работают несколько человек, поэтому я не хочу переключаться между ветвями, когда я это делаю. Если я хочу обновить существующую ветвь на dev-сервере из репозитория github, мы все используем, что было бы правильным путем? Если я запустил команду "git pull github branchname", это просто потянет ветку в текущую ветку?

Все примеры git, которые я могу найти, показывают, что вы сначала запускаете "checkout branchname", затем выполняете pull. Я пытаюсь избежать этого. Как я уже сказал, это уже существующая ветка, и я просто хочу обновить ее до последней версии.

4b9b3361

Ответ 2

Использование

git fetch

вместо этого. Он обновляет удаленные ссылки refs и объекты в вашем репо, но оставляет локальные ветки, HEAD и рабочую среду.

Ответ 3

У меня был тот же самый вопрос с необходимостью принять или копить текущие изменения функций, мастер - контроль ветвь, не pull команду действительно получают все с удаленного на локальный master рабочей области, а затем снова переключиться на эту ветку и выполнить rebase, чтобы сделать его к -date с мастером.

Чтобы сделать все это, сохраните рабочее пространство на ветке функций и избегайте всех переключений, я делаю это:

git fetch origin master:master

git rebase master

И это трюк красиво.

Ответ 4

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

Более конкретно, предположим, что в реестре github есть ветки D, B, C и master (причина этого нечетного набора имени ветки будет ясна через мгновение). Вы находитесь на хосте devhost, и вы находитесь в репо, где origin - это реплика github. Вы выполняете git fetch, который переносит все объекты и обновления origin/D, origin/B, origin/C и origin/master. Все идет нормально. Но теперь вы говорите, что хотите, чтобы что-то произошло на devhost, с локальными ветвями D, B, C и/или master?

У меня есть эти очевидные (для меня в любом случае) вопросы:

  • Почему вы хотите обновить контуры всех веток?
  • Что делать, если какая-либо ветвь (например, B) совершает ошибку в удаленном (github) репо? Должны ли они быть объединены, переустановлены или...?
  • Что делать, если вы находитесь на какой-либо ветке (например, C), а рабочий каталог и/или индекс изменены, но не зафиксированы?
  • Что делать, если в удаленном репо добавлены новые ветки (A) и/или ветки удалены (D)?

Если ответ на (1) "потому что devhost на самом деле не предназначен для разработки, а скорее является локальным зеркалом, которое просто хранит локально доступную копию репозитория github, чтобы все наши фактические разработчики могли читать из него быстро вместо того, чтобы медленно читать из github", тогда вы хотите "зеркало", а не "нормальное" репо. У него не должно быть рабочего каталога, и, возможно, он не должен принимать нажатия, и в этом случае оставшиеся вопросы просто уходят.

Если есть другой ответ, (2-4) становятся проблематичными.

В любом случае, здесь рассмотрим способ обновления локальных ссылок на основе удаленных ссылок (например, после запуска git fetch -p):

for ref in $(git for-each-ref refs/remotes/origin/ --format '%(refname)'); do
    local=${ref#refs/remotes/origin/}
    ... code here ...
done

Что входит в раздел ... code here ..., зависит от ответов на вопросы (2-4).

Ответ 5

EDIT: используйте 'git pull' Он будет извлекать все ветки из репо и также обновляться до последней, если ветка выходит из локальной системы только для текущей ветки. Примечание. Притяжение git эквивалентно извлечению + слиянию, которое извлекает все ветки, но объединяет только текущую ветвь.