Ответ 1
Если вы сделали C2 в своей собственной ветке, все, что вам нужно сделать, это:
- обновите своего хозяина вверх/вниз.
- переформатируйте свою ветвь C2 сверху вверх/мастер
- сделайте запрос на извлечение из ветки C2.
Обратите внимание, что если вы пересобираете ветвь C1 вверху вверх/вверх, ваш существующий запрос на выгрузку будет автоматически обновляться!
См. также Как выполнить запрос на перенос Github?".
пользователь user10 добавляет в комментарии:
Я совершил
C1
у своего хозяина и дал запрос на тягу.
Я сделал измененияC2
и не знаю, где взять и как передать запрос на тягу без добавленияC1
.
Это моя проблема.
Итак, у вас есть:
y--y--y--y (origin/master)
\
x--C1--C2 (master)
Во-первых, не делайте никаких изменений в верхней части origin/master
, что приведет к обновлению вашего существующего запроса на pull (но на этот раз с C1
и C2
из вашего rebased master
, поскольку я упомяните в моих советах по поиску запроса, во второй точке)
Убедитесь, что C2 находится в собственной ветке:
git checkout master
git branch bC2
git reset --hard master C2~
git tag C2base master
Если C2
состоит из нескольких последовательных коммитов, замените C2~
на первое совершение серии C2
, за которым следует "~
".
Предположим, что C2
совершает следующее C1
совершает.
Убедитесь, что у вас нет какой-либо работы (не зафиксировано): "reset --hard
" удалит их.
Обратите внимание, что тег C2base
ссылается на фиксацию непосредственно перед C2
. Нам это нужно ниже.
y--y--y--y (origin/master)
\
x--C1 (master)
^ \
| --C2 (bC2)
(C2base)
Тогда a git pull --rebase origin
воспроизведет ваш мастер сверху origin/master
.
y--y--y--y (origin/master)
\ \
| x'--C1' (master)
|
x--C1
^ \
| --C2 (bC2)
(C2base)
Обратите внимание, как C1
дублируется здесь и по-прежнему ссылается через ветвь bC2
.
Наконец, убедитесь, что ваша ветка bC2
выполнена поверх origin/master
имеет хорошие результаты:
git rebase --onto origin/master C2~ bC2
git tag -d baseC2
Что дает вам:
C2' (bC2)
/
y--y--y--y (origin/master)
\
x'--C1' (master)
(Старый C1
commit больше не ссылается ни на что, поэтому он исчезает в reflog, который можно использовать to вернуть неверную rebase, например)
И теперь вы можете выполнить запрос на вытягивание из ветки bC2
, которая содержит только C2
commits!