2017-01-23 13 views
-1

Я искал проблему с созданием TeamCity для запросов GitHub pull, как описано в this blog post, и я пытаюсь реплицировать поведение проверки локально.Почему изменения в главном не отображаются в моих головах GitHub?

Вот последовательность шагов я следующее:

// in /projects/semver_demo/master 
git checkout master 
echo "Hello World!" > master.txt 
git add . 
git commit -m "edited master.txt" 
git push 
git branch foo 
echo "Hello World!" > foo.txt 
git add foo.txt 
git push 

Теперь я хожу в GitHub, запрос открытым тянуть # 123 от филиала foo. Затем в отдельном репо, что я проверил в другую папку, я проверяю, что я считаю, что нынешний глава объединения для запроса тянуть # 123:

// in /projects/semver_demo/merged 
git fetch origin refs/pull/123/merge:pr123 
git checkout pr123 

ОК, до сих пор, так хорошо - я на ветке, содержащей мою функцию. Теперь я вернусь в свою рабочую папку, смоделирую внесение изменений в мастер, которые, как я понимаю, должны появиться, когда я снова получаю слияние.

// in /projects/semver_demo/master 
git checkout master 
echo "Hello again!" >> master.txt 
git add master.txt 
git commit -m "Added another line to master.txt" 
git push 

Теперь переключитесь обратно в мою папку feature_branch и удалите и повторно принести слияния голову:

// in /projects/semver_demo/merged 
git checkout master 
git branch -D pr123 
git fetch origin refs/pull/123/merge:pr123 
git checkout pr123 

Когда я делаю это, я ожидал увидеть новый «Привет еще раз!» сообщение в merged/master.txt, но я не ... Я вижу ту же версию master.txt, которая существовала, когда была создана ветка.

Мое понимание заключалось в том, что сливная головка даст вам эквивалент слияния текущего мастера (или восходящей ветви) с текущим HEAD ветки функции - но это не то, что я вижу. Я пропустил какой-то тонкий шаг, чтобы сказать Гиту «повторно объединить» голову слияния? Или я полностью неправильно понял цель слияния головок?

EDIT: После немного больше исследования, толкая изменения foo НЕ вызывают головки слияния с учетом последних изменений в master ... но толкая изменения master не делает. Мне интересно, если это поведение по дизайну?

+1

Видите ли вы УУЮ для изменения слияния ГОЛОВЫ после этого второй выборки? На самом деле я думаю, что слияние HEAD изменяется только при изменении кончика ветки, но мне нужно настроить аналогичный репрограммирование и подтвердить, что это так. –

+0

@BrendanForster как бы проверить это? Я в основном работал с Git с помощью различных инструментов GUI и поэтому не имею большого опыта работы с базовыми структурами данных напрямую ... –

+1

запустить 'git rev-parse HEAD' после того, как вы проверили' pr123 'ref - если идентификатор объекта отличается между обоими обычаями, это означает, что GitHub попытался создать новое компиляцию слиянием. Затем вы можете «git show HEAD» увидеть, какие коммиты он пытался слить, и вы можете сопоставить их с теми ветвями, которые у вас есть локально ... –

ответ

0

Я проверил с поддержкой GitHub, что слияние головок обновляется только при внесении изменений в головную ветвь; они не обновляются, чтобы отражать изменения в базовом ветви - поэтому, если вы создаете пакеты предварительной отправки на основе слияния с заголовком pull, всегда нажимайте на ветвь PR непосредственно перед созданием пакета. Если вы используете триггеры VCS, чтобы начать сборку пакетов, это должно произойти в любом случае, поэтому я считаю, что это один из тех неясных краевых случаев, которые на самом деле не случаются очень часто в реальной жизни.

Там более подробные записи по этому поводу, и как это влияет на рабочий процесс GitHubFlow мы используем, в http://www.dylanbeattie.net/2017/01/semantic-versioning-with-powershell_26.html

 Смежные вопросы

  • Нет связанных вопросов^_^