Делая нажатие git от отсоединенной головки

Я на отдельной голове и сделал некоторые изменения. Я хочу подтолкнуть их к этой отсоединенной голове с помощью git. Я не хочу, чтобы мои изменения шли на ветку разработки и, конечно же, не на ведущую ветку. Я работаю над файлом с другим человеком.

Примеры ветвей

   develop
   master
   *(HEAD detached at origin/49792_testMocha)

Как я вдавливаю в голову, не влияя на развитие или мастер?

Ответы

Ответ 1

Создайте новую ветку с помощью git checkout -b BRANCH_NAME

Затем нажмите новую ветку на удаленную: git push origin BRANCH_NAME

Ответ 2

Если вы находитесь на отдельной голове и хотите нажать на удаленную ветку

git push origin HEAD:name-of-your-branch

в противном случае вы можете создать новую ветку и нажать на нее (она будет создана автоматически)

git branch new-branch-name
git push -u origin new-branch-name

Ответ 3

В то время как все ответы здесь как бы отвечают на первоначальный вопрос (как протолкнуть отдельную голову, не затрагивая другие ветки), все предлагают создать новую ветку.

Здесь показано, как перейти к новой удаленной ветки без создания новой локальной ветки.

Я даю тебе:

git checkout --detach # (or anything else that leaves you with a detached HEAD - guillotine anyone?)
[change stuff & commit]
git push origin HEAD:refs/heads/my-new-branch

Замените origin соответствующим удаленным именем (к которому у вас есть доступ для записи), а my-new-branch любым другим, как вы хотите, чтобы вызывалась новая ветвь.

Ваши коммиты на HEAD будут перенесены в новую ветку с именем my-new-branch.

Тада! 🎉

Ответ 4


git checkout

git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back

Это проверит новую ветвь, указывающую на требуемую фиксацию.
Эта команда проверит чек на коммит.
На этом этапе вы можете создать ветку и начать работу с этой точки.

# Checkout a given commit. 
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
#in order to be able to update the code.
git checkout <commit-id>

# create a new branch forked to the given commit
git checkout -b <branch name>

Ответ 5

Примечание: создание веток перед нажатием тем более рекомендуется, чтобы git 2.11 или менее использовался для segfault!

Это не будет иметь место с Git 2. 12+ (первый квартал 2017 года)

См. Коммит b10731f (07 января 2017 г.) Кайла Мейера (kyleam).
(Объединено с Junio C Hamano - gitster - в коммите b85f79c, 18 января 2017 г.)

branch_get_push: не branch_get_push segfault, когда HEAD отсоединен

" git <cmd> @{push} " на отдельном HEAD, используемом для сегментации; это было исправлено до ошибки с сообщением.

Ошибка теперь будет:

HEAD does not point to a branch

С Git 2.12 или более, вы можете затем переместить отсоединенный HEAD в удаленную ветвь, как показано в ответе Мэтта.

Ответ 6

Создайте новую ветвь для этого коммита и git checkout -b <branch-name> <commit-hash> его: git checkout -b <branch-name> <commit-hash>. Теперь вы можете отправить свои изменения в новую ветку: git push origin <branch-name>

Если вам нужно очистить другую ветку от оставшихся git reset --hard <branch-name> обязательно запустите git reset --hard <branch-name>.

Вот статья, которая объясняет, как работает ветвление и отсоединенная головка.