LINUX.ORG.RU

Не могу получить историю по удаленному файлу в гит

 


0

1

Собственно как после такого не любить гит)

Пропал файл вместе со своим каталогом

git log --stat 0c7df31

doc/spec/5/2.pdf | Bin 0 -> 162935 bytes
1 file changed, 0 insertions(+), 0 deletions(-)

commit 0c7df31
Parent: 9d480c
Child: 7e0eb7e (Merge branch 'master' of http://../master)
Branches: master, origin/master

в истории комитов в каталог doc

git log — doc

этого комита нет, есть только те что были до него. А вот так

git log 0c7df31 — doc

комит показывается есть

чекаут 0c7df31 возвращает файл, но... как найти куда и когда он делся? Почему его не показывает? Ни одно из магических заклинаний найденых в гугле не может даже исходный комит в истории показать, не говоря уже о том, чтоб показать где его удалили. Надеюсь адепты гита разрулят эти нубские непонятки)

git --version
git version 1.7.9.5 бубунта 12.04

Перемещено beastie из general

★★★★

Ответ на: комментарий от s9gf4ult

git log --diff-filter=D — doc/spec/5/2.pdf
git log --diff-filter=D — 2.pdf

0 результатов

git log --diff-filter=D — ./doc

вывел два комита из тех что там были до добавления файла - т.е. ничего полезного(

F457 ★★★★
() автор топика
Последнее исправление: F457 (всего исправлений: 1)
Ответ на: комментарий от F457

git log показывает изменения перед HEAD по умолчанию. Возможно ты находишься в коммите, который раньше по истории, чем тот коммит который ты ищешь.

git log --diff-filter=D master -- ./doc

s9gf4ult ★★
()
Ответ на: комментарий от s9gf4ult

Я на самом последнем комите мастера... Никакой разницы между выхлопом этой и прошлых комманд.

F457 ★★★★
() автор топика

Тему не могу уже редактироывать =( Путем ручных изысков было выявлено, что файл сгинул при мердже(и объяснить это чудо пока никак не получается)

Вот это заклятье(хз что оно делает) git log -U -m --simplify-merges — doc/spec/5/ позволяет хотябы получить коммит когда файл добавился.

В общем вопрос как найти комит, когда файл удалился и как объяснить творимую гитом порнографию остается открытым...

F457 ★★★★
() автор топика
Ответ на: комментарий от F457

В общем вопрос как найти комит, когда файл удалился

Если сильно нужно и втупую - что-нибудь вроде git -log -p | grep ^deleted (искать патч с записью «файл удален»).

как объяснить творимую гитом порнографию

Всё просто: git - это такое средство троллинга Линусом всех гитоюзеров.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Если сильно нужно и втупую

Походу лога по изменениям при мердже нет от слова совсем... там только комит по добавлению файла

F457 ★★★★
() автор топика

Я пока ещё не эксперт в git'е, но ИМХО данный коммит (0c7df31) либо находится в другой ветке, либо был удалён из всех веток вообще. В первом случае git считает, что pdf-файла никогда не было в текущей ветке. А во втором случае - что его вообще никогда не было, а коммит пока ещё болтается в базе, так как его не подчистил git'овский сборщик мусора.

Deleted
()
Ответ на: комментарий от tailgunner

Поэтому я и сказал «ищи в патче».

Файл могли удалить совсем, из всей истории. В этом случае git log не поможет, ИМХО нужно копать куда-то в сторону git reflog.

Deleted
()
Ответ на: комментарий от Deleted

Файл могли удалить совсем, из всей истории. В этом случае git log не поможет

git log _уже_ помог - нашел коммит с добавлением. Так что в истории файл есть (ну или git совсем уж трололо-поделка).

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

в истории комитов в каталог doc

git log — doc

этого комита нет, есть только те что были до него. А вот так

git log 0c7df31 — doc

Из этого я сделал вывод, что коммита в текущей ветке нет.

Deleted
()
Ответ на: комментарий от tailgunner

Дык git log -p | grep -a7 -b7 2.pdf возвращает только тот комит, когда файл добавили

F457 ★★★★
() автор топика
Ответ на: комментарий от Deleted

Из этого я сделал вывод, что коммита в текущей ветке нет.

за 0c7df31 идет мердж

Parents
a3023ae + 0c7df31
Merge

Merge branch 'master' of http://../master

Если я все правильно понял мерджилось оно в мастер, и на этой ветке должно присуствовать

Тем более

git branch --contains 0c7df31
* master

F457 ★★★★
() автор топика
Ответ на: комментарий от Deleted

git log --stat 0c7df31

commit 0c7df313256bb6633c8597204265878a25dfe2b7
Author:
Date:

Add

doc/spec/5/2.pdf | Bin 0 -> 12935 bytes
1 file changed, 0 insertions(+), 0 deletions(-)

commit 9d480caa5f41513021eaa7b5732897f39edb12ab

и тд более ранние комиты

F457 ★★★★
() автор топика
Ответ на: комментарий от Deleted

Показывает кучу комитов, вероятно даже все(сложно этот бардак оценить). Где файл удален, не показывает, тот комит, где файл добавлен тут есть.

F457 ★★★★
() автор топика
Ответ на: комментарий от F457

Показывает кучу комитов, вероятно даже все(сложно этот бардак оценить). Где файл удален, не показывает, тот комит, где файл добавлен тут есть.

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

Что говорит

git status
?

Deleted
()
Ответ на: комментарий от Deleted

Похоже оно показало только цепочку комитов от последнего до хз какого куда входит 0c7df31... но им цепочка не ограничилась. Хотя и файл и его каталог были добавлены в 0c7df31

Что говорит git status

показывает 1 незакомиченный файл который я счас правлю и все)

F457 ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.