Как вернуться в ветку git после возврата git - PullRequest
3 голосов
/ 26 января 2012

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

git checkout ##SHA##

Я смог заставить весь проект работать так, как должен, но теперь у меня другая проблема.Меня больше не проверяют в той ветке, в которой я работал. Как мне сохранить имеющийся у меня код и вернуться к работе внутри ветви?

git branch -a

говорит, что я нахожусь в

* (no branch)

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

Ответы [ 4 ]

6 голосов
/ 26 января 2012

Никогда не делай git checkout <hash>.Он предназначен для временного изучения коммита (и, следовательно, ветки no, которую вы видите).Что вы хотели сделать, так это, находясь в ветке, git reset --hard <hash> (удалите --hard, если у вас есть необходимые изменения в рабочем каталоге.)

Для восстановления:

git checkout the_branch
git reset --hard <hash>

Обратите внимание, что <hash> выше будет тем же, который вы использовали с git checkout при попытке "отменить" изменения.

2 голосов
/ 26 января 2012

Оформите заказ обратно в свою ветку, затем объедините изменения, которые вы внесли в ветку без головы:

git checkout my_branch
git merge ##SHA##

После этого вы должны иметь ветку my_branch при последнем совершенном вами коммите.

1 голос
/ 26 января 2012
  1. Создать ветку: git branch -b branch_for_new_code
  2. Добавьте и зафиксируйте ваши изменения.
  3. Оформите ветку, в которую хотите вернуться: git checkout branch_i_was_on
  4. Объединить новую ветку со старой: git merge branch_for_new_code
  5. Удалить новую ветвь после слияния.

На будущее запомните простое правило: когда вы делаете что-то, в чем вы не уверены, сначала сделайте ветку. Наконец, только проверяйте названия веток, если вы действительно не знаете, что делаете.

0 голосов
/ 26 января 2012

Если вы уверены, что находитесь там, где хотите, чтобы ветвь находилась, вы можете:

git branch -D my_branch
git checkout -b my_branch

Это удаляет старый указатель ветви и создает новый, указывающий на вашу текущую ГОЛОВКУ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...