LINUX.ORG.RU

[git]отменить удаление файла

 


0

1

Удалил по ошибке в рабочей директории файл. Как откатить? Других изменений много, поэтому reset --hard не покатит. А путь git reset --hard не дает указать. Проблему в принципе решил копированием файла из другого клона, но интересно, можно ли по-человечески?

★★★★★

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

Из мана: «git-revert - Revert some existing commits». А я еще ничего не комитил, только в рабочей копии изменил.

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

ТС пишет что нежелательно возвращаться ибо много модифицированных файлов

а вообще, в Mercurial это не проблема, а в Git голову сломать надо как сделать что-то простое :) в hg это вообще в красивом GUI делается легко и просто ;)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Да и в консоле hg revert решает проблему в два счета. А в гите куча дичайшего гемора из-за «гениальнейшей» идеи staging'а.

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

Ага, вижу, спасибо.

Добавлю, что это - первый пример в `git help checkout'

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

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

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

Я думаю, что до этого никак не догадаться, если не представлять себе модель работы гита в деталях...

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

Я не представляю модель работы гита в деталях, но откуда-то я это знаю. Честно говоря, я и сам не помню откуда. Наверняка загуглил, либо просто видел где-то такое использование, в каком-нибудь git quickstart how-to.

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

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

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

Из всего этого нужно сделать вывод, что интерфейс гита спроектирован по-дурацки, при всем уважении к этой системе и ее создателям. Если пользователю нужно ЗНАТЬ, как выполнить определенную задачу, то это плохой интерфейс. В хорошем интерфейсе можно логически додуматься.

Вот я гит и хг знаю на одном уровне, но в хг я сразу могу додуматься как сделать ту или иную операцию, а в гите надо гуглить, манить, и еще и на ЛОР постить.

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

Какое отношение это имеет к теме? Твоя цель была обосрать гит или узнать как восстановить файл?

Мне плевать на вашу возню git vs hg, оставь меня в покое со своими выводами. Если мне надо, я изучу инструмент, каким бы он неудобным не был.

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

неосилятор, как говорится, детектеd.

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

Вот я гит и хг знаю на одном уровне

Одинаково хреново?

yoghurt ★★★★★
()

1. откат файла, если он не закоммичен

$ git rm TODO
rm 'TODO'
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	deleted:    TODO
#
$ git reset HEAD TODO
Unstaged changes after reset:
M	TODO
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	deleted:    TODO
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout -- TODO
$ git status
# On branch master
nothing to commit (working directory clean)
2. файл закоммичен
$git rm TODO
rm 'TODO'
$ git commit -m "123"
[master 438cf5a] 123
 0 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 TODO
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
$ git reset --soft HEAD^
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	deleted:    TODO
#
свели к первому случаю.

внимание вопрос - почему мне не потребовалось для этого открывать man?

dhampire ★★★
()

как вариант: git show HEAD:file_name >file_name

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

У меня вывод статуса был строчек на 500 где-то :)

echo '[pager] status = true' >> ~/.gitconfig

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