Спасение файлов и коммитов из "No branch" в git

Я начал работать над некоторыми файлами из подмодуля git другого проекта. Однако, поскольку это был подмодуль git, он никогда не проверял "master" и вместо этого просто извлекал head и помещал все файлы в папку "no branch".

теперь, когда я случайно внес некоторые изменения в эти файлы, я просто понял, что работаю в подмодуле "no branch" моего проекта.

Как я могу получить эти файлы в ветку (например, master), чтобы я мог спасти их?

27
задан Xeoncross
15.12.2022 16:11 Количество просмотров материала 2971
Распечатать страницу

3 ответа

можно использовать git reflog найти" потерянные " коммиты:

$ cd submodule_dir
$ git reflog          # Find the commit
$ git checkout master
$ git cherry-pick $SHA_OF_MISSING_CMMIT
24
отвечен mipadi 2022-12-16 23:59

состояние "нет ветви" называется отсоединенной головкой. Это вызвано этим, потому что Head ref не присоединен ни к какой ветви, вместо этого это указывает непосредственно на фиксацию. Чтобы прикрепить HEAD к ветви, которая указывает на текущий Head commit, используйте git checkout -b branchname.

вы можете безопасно обновить существующую ветвь, чтобы включить коммиты во главе с этой последовательностью:

git branch temp
git checkout branchname
git merge temp
git branch -d temp

или, что то же самое, используя reflog нотации HEAD@{1} избежать сделать временное ответвление:

git checkout branchname
git merge HEAD@{1}

использование временной ветви было бы хорошей идеей, если бы вы не собирались выполнять слияние немедленно.

если вы хотите принудительно перезаписать существующую ветку, чтобы указать на коммит в HEAD, вы можете использовать git branch -f branchname && git checkout branchname. Если коммит в HEAD не основан на текущей подсказке branchname это приведет к не-быстрой перемотке вперед branchname которого вы обычно хотите избежать (это рассматривается как переписывание истории).

3
отвечен Chris Johnsen 2022-12-17 02:16

добавить к предыдущим ответам:

пока вы еще находитесь на отдельной голове, вы можете добавить тег:

git tag <some-tag>

добавить tag на коммит, который сделает его видимым в gitk и другие инструменты.

1
отвечен data 2022-12-17 04:33

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх