2015-01-20 4 views
1

Я пытаюсь восстановить код, потому что я случайно переключился на ветвь в затмении и потерял все свои данные, каким-то образом (я до сих пор не знаю, что я сделал) , Когда я открываю мой GIT reflog в командной строке, я вижу:Не удается восстановить фиксацию из Git из-за того же sha в reflog

6dc60f6 [email protected]{14}: commit: fixed class mismatch for integers 
638fbb1 [email protected]{15}: commit: fixed first NPE bug 
22fc2b9 [email protected]{16}: commit: v 6.0.5 
0acef4f [email protected]{17}: commit: clean up 
8a441cb [email protected]{18}: commit: cleaned up db code 
9ac384d [email protected]{19}: commit: ver 6.0.4 
ce1f1c2 [email protected]{20}: commit: addded drivers 
9b5a4dd [email protected]{21}: checkout: moving from master to 9b5a4dde0f97303579ec0cf15413ecce83a636dc 
6dc60f6 [email protected]{22}: commit: change Db 
9b5a4dd [email protected]{23}: commit: // for public schema: "" or "public" 
f668dd1 [email protected]{24}: commit: changed schema 
a0e5b2a [email protected]{25}: commit: changed frames 

Я пытаюсь оформить 6dc60f6 [email protected]{14}: commit: fixed class mismatch for integers, но все мои попытки проверить его пойти на 6dc60f6 [email protected]{22}: commit: change Db, который является гораздо более старой версии. Это от команды git reflog, а не git log, поэтому проверка @{14} тоже не работает.

Есть ли способ проверить фиксацию lateet для 6dc60f6 или это потеряно?

Спасибо.

P.S. Остальные 14 команд - это то, что я перехожу от одного плеча к другому и снова пытаюсь его исправить.

638fbb1 [email protected]{0}: checkout: moving from 6dc60f6 to master 
638fbb1 [email protected]{1}: checkout: moving from ce1f1c247f94298c9e1fd67f0e1199a82df2ff1c to 6dc60f6 
ce1f1c2 [email protected]{2}: checkout: moving from 6dc60f6 to ce1f1c2 
638fbb1 [email protected]{3}: checkout: moving from master to 6dc60f6 
638fbb1 [email protected]{4}: 
6dc60f6 [email protected]{5}: checkout: moving from 6dc60f6f81a9f97d6d1244a288bec027fd7604b6 to master 
6dc60f6 [email protected]{6}: 
638fbb1 [email protected]{7}: checkout: moving from ce1f1c247f94298c9e1fd67f0e1199a82df2ff1c to 638fbb1 
ce1f1c2 [email protected]{8}: checkout: moving from 9b5a4dde0f97303579ec0cf15413ecce83a636dc to ce1f1c2 
9b5a4dd [email protected]{9}: checkout: moving from 638fbb18fbe0dfd7bca8477d7b9ddde44443ed4a to 9b5a4dd 
638fbb1 [email protected]{10}: checkout: moving from 6dc60f6f81a9f97d6d1244a288bec027fd7604b6 to 638fbb1 
6dc60f6 [email protected]{11}: checkout: moving from 638fbb18fbe0dfd7bca8477d7b9ddde44443ed4a to @{6} 
638fbb1 [email protected]{12}: checkout: moving from master to 638fbb1 
6dc60f6 [email protected]{13}: checkout: moving from 078b90ff9eb70560ecf5e9a25b1f7aaa7db9a81a to master 
078b90f [email protected]{14}: checkout: moving from master to @{5} 
6dc60f6 [email protected]{15}: checkout: moving from latest_branch to master 
6dc60f6 [email protected]{16}: checkout: moving from new_branch to latest_branch 
6dc60f6 [email protected]{17}: checkout: moving from master to new_branch 

Edit 2:

Запуск git reflog show --no-abbrev, это на почтовый файл репо, прежде чем я сделал все эти извлечений, что затопленные reflog так начинается @ {0}, обратите внимание на 2 (голова, мастер) с таким же хеш-но разных совершающих сообщений:

6dc60f6f81a9f97d6d1244a288bec027fd7604b6 (HEAD, master) [email protected]{0}: commit: fixed class mismatch for integers 
638fbb18fbe0dfd7bca8477d7b9ddde44443ed4a [email protected]{1}: commit: fixed first NPE bug 
22fc2b9e22e9259858f5d8df6b44fdd17e7ef475 [email protected]{2}: commit: v 6.0.5 
0acef4fef3df6df7b6f77ef3d373f3071aafdc4a [email protected]{3}: commit: clean up 
8a441cbfc8b68b25fe6cc2e96ed5cad797ba139c [email protected]{4}: commit: clean up db code 
9ac384dfec998e3c7ea0641ba04025d5c0aa4abb [email protected]{5}: commit: ver 6.0.4 
ce1f1c247f94298c9e1fd67f0e1199a82df2ff1c [email protected]{6}: commit: added drivers 
9b5a4dde0f97303579ec0cf15413ecce83a636dc [email protected]{7}: checkout: moving from master to 9b5a4dde0f97303579ec0cf15413ecce83a636dc 
6dc60f6f81a9f97d6d1244a288bec027fd7604b6 (HEAD, master) [email protected]{8}: commit: change Db 
9b5a4dde0f97303579ec0cf15413ecce83a636dc [email protected]{9}: commit: // for public schema: "" or "public" 
f668dd11646727dae7b8511796a88c59d439c2bf [email protected]{10}: commit: changed schema 
a0e5b2a2c349ae0665f80fa1b7027836c8bbc6aa [email protected]{11}: commit: changed frames 
2e934ffe0546413e7a7e81318f9e7aefc458e8d2 (origin/master) [email protected]{12}: commit: Change classes: BusinessRules - fix compliler error DBMetaInfopanel - fix dialog: MSDOC-ISSUE-007, MSDOC-ISSUE-010 ReportTable - fix DateTime and Number format Config.txt - add global DateTime and Number format add jar Profiler 6.0.4 
078b90ff9eb70560ecf5e9a25b1f7aaa7db9a81a [email protected]{13}: commit: apply 6.0.3.2 fix and changed global parameters in Config.txt commented all DBs in Config.txt 
9fb275d45da8e2df3044448b3275aa24a77ddd85 [email protected]{14}: commit: change framework version to 6.0.4 
9835cdf1ba1d38bf3343e43623bd31f2aa0562b6 [email protected]{15}: commit: add Datetime and number format 
839fa8b27a1c7a05fa19d75b5c62a8f35a865b9d [email protected]{16}: commit: add new profiler-6.0.3.4 remove profiler-6.0.3.1 change pom.xml 
68acc9cfd9e0bc65159e35e832afa59d4d014717 [email protected]{17}: commit: add 6.0.3.1 
46b0d9c2c8d4ac81f951ae41e2f405c864f430b0 [email protected]{18}: 
+0

Если вы используете 'git log', вы можете увидеть полную ша и тем самым устранить двузначность между ними. –

+0

делает проверку 'HEAD @ {14}' (явно с 'HEAD') решить проблему? –

+0

@CommuSoft Я не могу записать запись, на которую я хочу посмотреть, потому что это последняя фиксация, я могу только подойти к '638fbb1' ​​прямо под ней. И проверка 'HEAD @ {14}' или '@ {14}' проверяет 14-ю фиксацию с '638fbb1', опять же, ближайший я могу добраться до нее. Я просто не могу добраться до этой последней фиксации для несоответствия класса. – NorthGuard

ответ

4

Проблема в том, что git reflog сокращает хэши до 7 символов, но первые 7 символов в этих двух фиксаций одинаковы.

Чтобы получить полный хэш с reflog, используйте следующую команду:

git reflog show --no-abbrev

Затем, вы можете использовать полный хэш проверка фиксации вы хотите.

+0

Несмотря на то, что это разрешено, я все еще смотрю на это. Я выполнил эту команду (в cygwin), и это действительно странно, но я получаю то же самое SHA с двумя разными сообщениями фиксации, они оба отображаются как (HEAD, master). Что происходит? (Я редактировал вывод в git reflog show --no-abbrev' в мой пост) – NorthGuard

Смежные вопросы