LINUX.ORG.RU

Затерлись предыдущие версии

 


0

1

Доброго времени суток. Есть три рабочих, откатываемых коммита, однако гит как будто похерил все их файлы для отдельных операций с оными (таких как просмотр изменений, открытие с предыдущих коммитов и etc). Всегда вываливает (консоль phpstorm): «Path %SCRIPT_NAME% exists on disk, but not in %MD5_HASH%». Вроде, ничего криминального я с репом не делал, один раз только чекаутнул там чет, но по-моему это тут не причем. Первый раз столкнулся, даже не знаю, что гуглить. Буду очень благодарен за пояснения. Спасибо



Последнее исправление: WennY (всего исправлений: 4)

Это не продолжение соседнего треда про «удалить всю историю» часом? ТСу это по ходу все-таки удалось.

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

Да история сама есть, отображается, некоторые файлы даже доступны (в основном новые).

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

А git --amend делали сознательно или по ошибке?

Не знаком со средой на скриншоте, но по-моему, причина где-то в ней.

> %MD5_HASH%

В Git SHA-1 используется !?

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

А git --amend делали сознательно или по ошибке?

Сознательно, с целью дополнить предыдущий коммит.

В Git SHA-1 используется !?

Хз :)

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

Не знаком со средой на скриншоте, но по-моему, причина где-то в ней.

PHPStorm. В ней или нет, в истории или ещё где-то должна быть задокументирована причина. Не самолично ведь ide влезла в гит, разворотила там все и тихо смылась, не оставив не единого следа.

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

А Вы уверены что репозиторий испорчен? В консоли всякие там команды работают:

git log --graph --stat --decorate
git diff master 840cb8c
?

В общем, если будут действительно подозрения на испорченный репозиторий, то git fsck.

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

А Вы уверены что репозиторий испорчен?

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

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

это же не с гитом проблемы, а с какой-то уродливой прослойкой.

Ну прослойка же не с неба берет ссылки. Куда делись ссылки, по которым сторм просит файлы? Или откуда он взял их, если в гите они верные?

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

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

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

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

Ну прослойка же не с неба берет ссылки

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

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

твоя прослойка пишет какую-то херню

По правде говоря, со смартигитом такой лабуды ни разу небыло, так что вполне вероятно ты прав..

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

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

подозреваю, что дело в кривой консольке, тупой обёртке и кривых руках.

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

Уже поздно. Пришло время переустанавливать шиндоус, шиндоус сам не переустановится.

trex6 ★★★★★
()

Если есть какие-то непонятки с сочетанием репозиторий/рабочее дерево, то можно попробовать сделать следующее:

cd /tmp
git clone <path-to-repo> test-repo
cd test-repo
<проверяем, нормально ли работается с новым рабочим деревом>

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

Я могу предположить, что сложилась следующая ситуация:

  1. в каком-то коммите c1 имеется файл file1
  2. в текущем коммите c2 файла file1 нет, но он есть в рабочем дереве. Может быть, он создан независимо или явился результатом каких-то сложных прыжков по репозиторию, не важно.
  3. при попытке прыгнуть с c2 на c1 (git checkout c1), git видит, что в рабочем дереве уже есть file1, причём, он не сохранён в репозитории. И, соответственно, отказывается прыгать без доп. приказаний.

в этом случае нужно внимательно посмотреть в рабочее дерево, убедиться, что файлы, указанные в команде, действительно не нужны в их текущем состоянии, после чего их можно удалить. Либо использовать git checkout -f или git clean.

Но все эти операции нужно делать с твёрдой уверенностью в том, что ты не убьёшь безвозвратно ценные данные. Поэтому я предложил бы для начала скопировать целиком репозиторий и рабочее дерево куда-то ещё. Кроме этого, конечно, лучше делать подобные штуки непосредственно в консольке (под виндой bash в составе msysgit вполне живой), чтобы не натыкаться на грабли, разложенные авторами IDE.

Вообще, IDE нужны не для того, чтобы избавить пользователя от необходимости изучать и понимать принципы работы используемых механизмов, а для того, что типичные и рутинные операции были в шаговой доступности. Поэтому если возникает ситуация, когда операция перестала быть типичной и у IDE не хватает мозгов на то, чтобы эту ситуацию адекватно обработать, пора доставать свой шворц и разбираться с проблемой на уровне потоков Силы элементарных кубиков.

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

Поэтому если возникает ситуация, когда операция перестала быть типичной и у IDE

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

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

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

WennY
() автор топика

Причина найдена. Сыр-бор из-за переименованной папки (library -> Library). Переименование (без коммита) решает проблему.

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

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

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