Вытащить изменения git в ветку, которая еще не была проверена - PullRequest
3 голосов
/ 11 февраля 2011

У меня есть репозиторий git, который содержит две ветки, 1.0 и master.Если я хочу работать над 1.0, я клонирую его, используя следующую команду:

git clone ssh://user@server/project -b 1.0 project-1.0

И все хорошо.Если я ввожу команду git branch, я вижу:

1.0

git branch -a выглядит следующим образом:

* 1.0
  remotes/origin/1.0
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

Однако, если кто-то еще нажимает изменения на master, и я делаю изменения в1.0 и попытка подтолкнуть, это не удастся, потому что мне нужно обновить репо с основными изменениями.Для этого я извлекаю мастер, извлекаю изменения и затем переключаюсь обратно на 1.0:

git checkout master
git pull
git checkout 1.0

Однако, есть ли более простой способ извлечения последних изменений без необходимости сначала проверять мастер?

Ответы [ 3 ]

3 голосов
/ 11 февраля 2011

В этом особом случае, когда мастер может быть быстро перенаправлен на источник / мастер, я делаю git push . origin/master:master (Да, это точка '.').

3 голосов
/ 11 февраля 2011

Если вы используете git fetch origin, то все удаленные ветви отслеживания под пультом origin будут обновлены. Это не изменит ни одну из «ваших» веток, но вы можете затем объединить любую из веток удаленного отслеживания в вашу ветку 1.0.

Проще говоря, git pull - это, по существу, git fetch, за которым следует git merge.

1 голос
/ 11 февраля 2011

Согласно вашему git branch -a, у вас нет местного филиала с именем master. Таким образом, git log master не должен работать. Ветвь удаленного отслеживания, а именно origin/master, всегда обновляется при получении. Поэтому, если вы хотите просмотреть журнал ветки master с пульта origin, все, что вам нужно сделать, это git fetch; git log origin/master. Похоже, вы не хотите иметь свою собственную версию мастера, поэтому git checkout master может быть ошибкой, которая просто мешает вашему рабочему процессу.

Тем не менее, если кто-то еще вносит изменения в мастер, а я делаю изменения в 1.0 и пытаюсь нажать, это не удастся, потому что мне нужно обновить репо с мастер-изменениями.

Это не правда. Пока никто не выдвинул расходящиеся изменения до 1.0, вы можете нажать на него. В основной ветке нет ничего особенного. Вы можете использовать git branch -d master (который, если он отклонился от 1.0, сообщит вам, что он был объединен с origin/master, но не HEAD), поскольку кажется, что вы не заинтересованы в поддержке своей собственной версии master.

Опять же, кто-то, кто нажимает на мастер, не мешает вам нажать на 1.0, и вам не нужно проверять местный master, просто чтобы проверить origin/master.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...