Мое репо на GitHub.Я работал над mybranch
, который вышел некоторое время назад master
, и у обоих были новые коммиты
git checkout master
git checkout -b mybranch
...
git add ...
git commit
git push origin mybranch
====>
[master] -------commit0--
[mybranch] \--commit1--
В этот момент я нажал commit1
на GitHub.
Я хотелчтобы проверить, работает ли commit1
под новым master
, я сделал rebase
(у commit0
и commit1
нет конфликта).Насколько я понимаю, теперь это выглядит так:
git fetch --all
git checkout master
git rebase origin/master
git checkout mybranch
git rebase origin/master
======>
[master] -------commit0--------------
[mybranch] \--commit1--
Все отлично работает, и я сделал новый прогресс commit2
.
git checkout mybranch
...
git add ...
git commit
git push origin mybranch
=====>
[master] -------commit0--------------------------
[mybranch] \--commit1-----commit2--
Я внес изменения в GitHub и был готов к извлечению-запрос.Однако теперь я вижу на GitHub, что у меня есть 3 коммита:
new to old:
- commit2
- commit0
- commit1
Это раздражает, потому что commit0
уже является частью мастера и не имеет ничего общего с mybranch
.Изменение файла с commit0
также отображается в моем запросе на удаление, что нежелательно.Итак, я выполнил "естественную" вещь: revert commit0
в mybranch
.
git checkout mybranch
git revert [commit0]
git push origin mybranch
Теперь запрос на получение выглядит лучше: он имеет только изменения от commit1
и commit2
.
Однако в моем локальном репо, поскольку я revert
ed commit0
, у меня нет его содержимого на mybranch
.git log
показывает:
new to old:
- revertcommit0 (HEAD -> mybranch)
- commit2
- commit1
- commit0 (origin/master, origin/HEAD, master)
...
На этом этапе:
- Что я должен сделать, чтобы устранить это несоответствие?Я бы хотел, чтобы новейшие
master
коммиты на mybranch
, и только подталкивали соответствующие изменения к mybranch
.Это требует слишком много? - Что я должен был сделать по-другому, чтобы избежать этого?
merge
может быть лучше практиковать?