Я искал проблему с созданием 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
не делает. Мне интересно, если это поведение по дизайну?
Видите ли вы УУЮ для изменения слияния ГОЛОВЫ после этого второй выборки? На самом деле я думаю, что слияние HEAD изменяется только при изменении кончика ветки, но мне нужно настроить аналогичный репрограммирование и подтвердить, что это так. –
@BrendanForster как бы проверить это? Я в основном работал с Git с помощью различных инструментов GUI и поэтому не имею большого опыта работы с базовыми структурами данных напрямую ... –
запустить 'git rev-parse HEAD' после того, как вы проверили' pr123 'ref - если идентификатор объекта отличается между обоими обычаями, это означает, что GitHub попытался создать новое компиляцию слиянием. Затем вы можете «git show HEAD» увидеть, какие коммиты он пытался слить, и вы можете сопоставить их с теми ветвями, которые у вас есть локально ... –