tl; dr
Вы можете попробовать git branch tempbranch d06a8c7d9a && git checkout master && git merge tempbranch
, чтобы получить коммит в вашу основную ветвь, а затем сделать толчок к производству.
Обычно gitкоммиты находятся на какой-то ветке.Может быть, для нескольких, но это не имеет отношения к делу.
Когда вы обычно работаете, у вас должна быть проверена какая-то ветка - ваша называется master
.
Но может случиться так, что вы покинете ветку и создадитефиксирует ваши новые изменения, не сообщая git, к какой ветке они принадлежат.В этом случае, git войдет во что-то, называемое «состояние оторванной головы».
Например:
git init
touch file.txt
git add file.txt
git commit -m "initial commit"
Создает файл и фиксирует его.Давайте изменим файл и сделаем коммит снова, чтобы у нас было два коммита.Если вы теперь явно git checkout HEAD~
, то есть, если вы проверяете первый коммит, вы больше не находитесь в ветви master
.Это только один пример того, как добраться до этого состояния.
Если вы сейчас создадите новый коммит, git предупредит вас:
$ git checkout HEAD^
Note: checking out 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at 24ebade initial commit
Чтобы получитьКоммит new возвращает обратно в какую-то ветку, вы можете делать то, что он вам рекомендует.
Создать новую ветку, которая указывает на ваш последний коммит, используя, например, git checkout -b tempBranch
.
Возможно, что у вас есть какие-то коммиты на master
, которые противоречат вашим изменениям, произошедшим в отключенном состоянии HEAD, которое сейчас находится на tempBranch
.По этой причине вам может потребоваться разрешить конфликты слияния.
git checkout master
git merge tempbranch
гарантирует, что обе ваши истории фиксации будут объединены в вашу ветку master
.После разрешения конфликтов слияния вы вернулись в состояние, к которому вы привыкли, и можете нажать как обычно.
Для очистки, поскольку вам больше не нужна временная ветвь tempBranch
, вы можете удалить ее с помощью git branch -d tempbBranch
.