LINUX.ORG.RU

Git восстановление файлов из индекса

 


1

1

Здравствуйте.

Есть проблема. Реализовал набор функционала на проекте. Затем сделал

#git add . --all || git commit -m"commit name"
...
// затем в полной уверенности что коммит создан
#git checkout -f master

как видите по запарке перепутал операции && и || (и почему в гите нет нормальной единой команды для создания коммита)

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

git checkout -f master

в файле .git/index остались какието вхождения старых файлов (по крайней мере имена созданных файлов).

Вопрос. Может есть способ все-же вытащить какие-то потерянные изменения, как-то от туда вытащить.


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

Почему нет? Есть. Почему у тебя такие руки кривые - вот хороший вопрос.

Вопрос. Может есть способ все-же вытащить какие-то потерянные изменения, как-то от туда вытащить.

git fsck

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

Вот зачем, не разобравшись, давать идиотские советы? Как ему рефлог должен помочь, если даже коммит не был создан?

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

Как ему рефлог должен помочь, если даже коммит не был создан?

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

waker ★★★★★
()

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

git commit file1 file2 ... -m ...
git commit -a -m ...
staseg ★★★★★
()
Ответ на: комментарий от staseg

git commit -a -m"" - работает если небыло например удалений файлов, и небыли созданы новые файлы, насколько я знаю.

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

Обожаю умников. Такое впечатление, что им слова не дают сказать в реальной жизни, а тут внезапно представилась возможность отметиться

Почему нет? Есть. Почему у тебя такие руки кривые - вот хороший вопрос.

Ну ок. Давай я как-бы подыграю и спрошу что-же это за команда?

git fsck

и?

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

Ну ок. Давай я как-бы подыграю и спрошу что-же это за команда?

Наверное, анонимус имел в виду команду `git commit`.

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

Реализовал набор функционала на проекте ... небыло

Чукча до такой степени писатель, что даже не смог осилить программу средней школы?

Если успел добавить файлы в индекс, то их копии должны сразу попасть в репозиторий объектов, это .git/objects/, и там они останутся пока не запустишь git gc или git prune. Как минимум можно поискать последние созданные файлы по дате и посмотреть контент через git cat-file -p по хэшу. Например...

$ find   .git/objects/ -type f | xargs  ls -trl

-r--r--r-- 1 single single  163 сен 26  2013 .git/objects/19/3f4400976e6bb698209ce4979a4b957f024450
-r--r--r-- 1 single single 1325 авг 23 22:24 .git/objects/63/cac0ad9e27cd26ce6b9a06d6111bc33aee34fb

$ git cat-file -p 63cac0ad9e27cd26ce6b9a06d6111bc33aee34fb

#include <iostream>
#include <fstream>
...

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