Я переделываю свой проект на github.Моя проблема: после объединения веток я потерял имя объединенной ветви (я использую gitk или git log --all --decorate --oneline --graph).Вот как я поступил:
1 / Во-первых, потому что я много работал в основной ветке, фиксируя нестабильные вещи, я предпочел работать рекомендованным способом с 2 ветками: 1 / работать в нестабильной ветке git dev;2 / git-ветка всегда стабильная и готовая к работе с именем 'master'.Поэтому я переименовал «master» в ветку «dev».Я уничтожил все предыдущие работы на мастере (я знаю, что это плохо, но это нормально, потому что я работаю один):
git branch -m master dev
git push origin :master
git push --set-upstream origin dev
2 / Теперь я хочу объединить «версию 0.1» с веткой «прототип» и «версией»0.2 'от ветви' dev '.
git checkout -b master
git reset --hard <sha1-of-initial-commit>
git merge --no-ff origin/prototype # version 0.1 # origin
git merge --no-ff <sha1-from-dev-branch> # version 0.2 # local
git push origin master
3 / С gitk я вижу, что моя ветка' master 'была объединена дважды: 2 графических цикла с именами' master ',' origin / master ','origin / proto 'и' origin / dev '.
Отлично!Я получил:
* b5819e5 (HEAD -> master, origin/master) Version 0.3
* \ e85a4e8 (origin/development) Version 0.2
* \ \ 415bcef Version 0.1
* | | 9539fb1 (origin/proto) Update
4 /, но моя проблема заключается в том, что при повторном клонировании проекта (во временном каталоге) с помощью gitk я больше не вижу имя «dev»: оно похоже на «dev»Ветка теперь является частью того же «мастера».Я вижу только два графических цикла с «master» и «origin / master» и «origin / proto».Похоже, что ветка 'dev' была удалена.
* b5819e5 (HEAD -> master, origin/master) Version 0.3
* \ e85a4e8 Version 0.2
* \ \ 415bcef Version 0.1
* | | 9539fb1 (origin/proto) Update
Каков хороший способ объединения: локальный или удаленный?Я не хочу терять информацию об имени ветви 'dev'!Я думаю, что невозможно объединить специальный SHA1 из удаленной ветви, верно?
Примечание: с помощью gitk я могу сделать сброс --hard для данного SHA1 из локальной ветви, но я не могу сделать это изудаленная ветка.Думаю, если бы я мог это сделать, слияние не потеряло бы название моей ветви.
Редактировать: Частично самоответ Это потому, что я сделал:
git merge --no-ff <sha1-from-dev-branch>
SHA1 не совпадает с тем из HEAD.Если я возьму последний коммит, 'origin / dev' будет наконец отображен даже в клонированном репо.