Как переместить мастер в HEAD?
* [971f835] (HEAD, original_idea) Now working here. Some comment 9
* [692b673] Some comment 8
* [3ebff62] Reverted to original idea. Some comment 7
| * [72ea01d] (master) Decided it wasn't worth the effort. Some comment 6
| * [985c1ad] Some comment 5
| * [4d7d491] Some comment 4
| * [0c697bb] Branched to try an idea. Some comment 3
|/
* [7280b1f] Some comment 2
* [5c2c6d0] Some comment 1
* [bc7aac6] Initial commit
Итак, master
остался позади. Не знаю, как это произошло. Как только я решил, что я закончил с веткой, которая не сработала, я проверил [7280b1f]
и продолжил оттуда.
Как это исправить? Я эта печально известная проблема "оторванной головы"?
Нужно ли выравнивать master
с HEAD
для оптимального состояния репо?
Мой рабочий процесс очень прост. Это просто управление одним текстовым файлом. В подавляющем большинстве случаев это:
git add .
git commit -am "Some comment"
И что это.
Я решил попробовать идею и создал ветку. Когда это не сработало, я проверил корень этой ветки и вернулся к подпрограмме git add/commit
.
Ответы
Ответ 1
Это печально известная проблема "особей"?
Нет, HEAD указывает на branch original_idea
Должен ли хозяин быть совмещен с HEAD для оптимального состояния здоровья репо?
Нет, мастер - это просто условное имя, обычно принимаемое как ветвь, которая легко строится и, надеюсь, рабочий снимок.
Как это исправить?
Если вы перетащили master в другой репозиторий, вам нужно объединить изменения с original_idea в master:
git checkout master
git merge original_idea
Имейте в виду, что если есть какие-либо конфликтующие изменения, вам необходимо их разрешить.
Если вы еще не нажали мастер в другой репозиторий, вы можете удалить мастер и воссоздать его из оригинала. ПРЕДУПРЕЖДЕНИЕ.. Каждый, кто работал над мастером, должен reset создать свою ведущую ветвь.
$ git checkout master
Switched to branch 'master'
$ git checkout -b experiment_1
Switched to a new branch 'experiment_1'
# Here we are going to delete master. Should be safe, since experiment_1
# was created from this point on the previous command
$ git branch -d master
Deleted branch master (was 72ea01d).
$ git checkout original_idea
Switched to branch 'original_idea'
# Now that we checked out the branch HEAD is pointing to, we can recreate master
$ git checkout -b master
Switched to a new branch 'master'
Ответ 2
Если git branch
показывает, что ваша текущая ветка - original_idea, это не было бы удаленной ситуацией HEAD.
Но в любом случае, если вы хотите, чтобы ваш мастер отражал вашу текущую фиксацию (которая что означает HEAD в Git):
git branch -f master HEAD
git checkout master
Вы найдете другие альтернативы в "Как мне "переместить" мои коммиты из "без ветки" в фактическую ветвь?".
Проблема заключается в том, что он завершает завершение всей ветки, заканчивающейся на главном сервере.
Затем вам нужно всего лишь:
- убедитесь, что HEAD ссылается на ветку (например,
original_idea
в вашей схеме).
- переформатировать эту ветку поверх мастера:
Это означало бы:
git checkout original_idea
git rebase master
git checkout master
git merge original_idea