Как безопасно перебазировать изменения в мастере в отделенную HEAD
До сих пор я не осознавал, что работаю над отдельной веткой HEAD (a32b42b123). Эта ветвь сильно отстает от хозяина. Я сделал следующие операции,git checkout master && git pull origin master
git checkout a32b42b123 && git rebase master
чтобы синхронизировать эту ветку с мастером и заметил, что большинство изменений, которые я сделал в этой ветке, пропали. Теперь я понимаю, что такое отдельная ГОЛОВА. Но как я мог выполнить git rebase master
безопасность здесь, не стирая изменения, которые я сделал?
1 ответ
Комитеты в Git неизменны. Если вы начали с a32b42b123 и внесли изменения, кончик вашей ветки больше не будет a32b42b123, а будет другим коммитом. Когда вы возвращаетесь к этому коммиту, как вы видели, вы теряете изменения, которые вы внесли поверх него.
Конечно, вы могли бы использовать отдельную головку, но это просто усложняет жизнь без веской (особенно) причины, особенно когда ветки такие дешевые. Просто создайте именованную ветку из этого коммита и внесите в нее изменения:
$ git checkout a32b42b123 -b mybranch
# make some changes, commit
$ git fetch origin
$ git rebase origin/master