#git
Добрый день! Я сделал часть работы в ветке(условно old_branch). Далее мне понадобилось перенести эту работу в другую ветку(условно new_branch). Так как работа не закончена, я не стал комитить изменения, а воспользовался заначкой(stash) $ git stash $ git stash branch new_branch У меня создалась новая ветка new_branch, в которую перенеслись мои незакомиченные изменения. Все ОК. Далее я вернулся на старую ветку и восстановил ее состояние до моих изменений $ git checkout old_branch $ git checkout -- . Изменения откатились не только в старой ветке, но и в новой тоже (WTF?). Понимаю что незакомиченные изменения потеряны навсегда, но есть ли способ восстановить заначку из новой ветки?
Ответы
Ответ 1
У меня создалась новая ветка new_branch, в которую перенеслись мои незакомиченные изменения. нет, они не «перенеслись». просто была создана новая ветка, копия той, в которой была создана «заначка» (stash), т.е., создан новый указатель на тот же самый коммит, который был текущим во время создания «заначки», затем эта новая ветка была назначена текущей, к рабочему каталогу (working directory) были применены сохранённые в «заначке» изменения, а сама «заначка» была удалена. раз вы сразу после этого выполнили команду checkout (с аргументом .), то изменения в рабочем каталоге были удалены. восстановить удалённую «заначку» теоретически можно (до проведения «сборки мусора»). пример: $ git fsck --no-reflog Checking object directories: 100% (256/256), done. dangling commit 424c2946da3bfe5cbc719f808c1a006612e5cab7 найденный «подвисший» (dangling) коммит и является удалённой (мною) «заначкой». с этим хэшем можно манипулировать как с «обычной заначкой»: $ git show 424c294 commit 424c2946da3bfe5cbc719f808c1a006612e5cab7 Merge: 3330f58 8a98560 Author: aleksandr barakinDate: Fri Oct 6 12:46:55 2017 +0300 WIP on master: 3330f58 20171006124552 diff --cc file index abf3108,abf3108..e1743f8 --- a/file +++ b/file @@@ -1,1 -1,1 +1,2 @@@ 2017-10-06 12:45 ++2017-10-06 12:46 $ git stash show -p 424c294 diff --git a/file b/file index abf3108..e1743f8 100644 --- a/file +++ b/file @@ -1 +1,2 @@ 2017-10-06 12:45 +2017-10-06 12:46 $ git stash apply 424c29 On branch new Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: file no changes added to commit (use "git add" and/or "git commit -a")
Комментариев нет:
Отправить комментарий