проблема с git: допустил ошибку при создании ветки и больше не может нажимать на master - PullRequest
1 голос
/ 13 мая 2010

Я сделал

git checkout -b foo origin/master
git push origin foo

, чтобы создать ветку и отправить ее в удаленное хранилище. Это, очевидно, неправильный способ сделать это (я начинающий git). Но кроме того, что это не так, это создало гораздо более серьезную проблему: Теперь мы не можем больше пытаться овладеть !

Удаление новой ветки ("foo") не помогает. Клонирование свежего репо тоже не помогает. Другая информация о побочном эффекте, который может помочь выявить проблему: Unfuddle (сайт git-хостинга, похожий на github) отображает вновь созданную ветку как HEAD. И после удаления этой ветки master снова отображается как HEAD, а все остальные впоследствии правильно созданные ветви (git branch foo и git push origin foo) снова отображаются как HEAD ...

В настоящее время никто не может подтолкнуть к овладению, это не только я.

Google не мог помочь до сих пор ... Вы можете?

Большое спасибо!

Обновление : эта проблема разрешилась, совершив что-то ... Но мы до сих пор не знаем, что пошло не так и будем заинтересованы в объяснении. Но, очевидно, это утратило свою актуальность.

Чтобы ответить на ваши вопросы:

  • Нет, вообще не было сообщения об ошибке при нажатии. Он просто этого не делал.
  • git ls-remote <remote> показал только то, что мы уже знали, что foo теперь ГОЛОВА.

Ответы [ 3 ]

1 голос
/ 10 июля 2012

На самом деле ваша первая команда создала так называемую ветвь отслеживания с именем foo, которая будет отслеживать удаленную главную ветвь по ссылке origin / master

Это означает, что теперь у вас есть взаимосвязь между ними, позволяющая вам использовать команды push / pull без параметров

Ваша вторая команда создала ветку foo на удаленной стороне и переопределила отношение, поэтому теперь локальный foo переходит к удаленному foo, но может извлекать напрямую из master. Вы можете увидеть это, выполнив:

git remote show origin

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

Так что вместо того, что вы сделали, вам, вероятно, пришлось выполнить:

git checkout -b foo master #create topic branch foo from the current state of local master

git push origin foo #create remote branch foo and setup direct relationship, if you really need to have it on the remote repo, but that's questionable

Поэтому я бы порекомендовал следующий рабочий процесс:

git checkout foo
...commit, commit...
git checkout master
git pull      #to update local master in case if there were changes made while you were working on  foo
git merge foo # to merge foo changes into master
git push # push local master to remote
0 голосов
/ 03 июля 2010

Если вы хотите подтолкнуть foo к мастеру, вам нужно сделать

git push origin foo: master

0 голосов
/ 13 мая 2010

Вы не можете нажать, потому что вы только создали локальную ветвь. Вам также нужен пульт, если вы этого хотите. Вам необходимо создать удаленную ветку и настроить ее для локального отслеживания:

git push origin origin:refs/heads/foo
git checkout --track -b foo origin/foo
git push
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...