Как скопировать раннюю фиксацию и сделать ее последней в git? [dубликат]

Я только что сделал тест, создал новую папку / новую и дал ей разрешения 777. При щелчке правой кнопкой мыши на нем опции «Ubuntu One» были выделены серым цветом. Также попытался создать ярлык в ~ / dir, но не повезло.

Короче: Нет, вы не можете

2
задан 13 August 2018 в 06:54

2 ответа

Предполагая, что вы начинаете с чистой рабочей строки, вы можете сделать:

cd <root_directory_of_your_repo>
git checkout master
git checkout 49a732c -- .

Когда вы укажете файл (в данном случае . (корневой каталог вашего репо)) в качестве аргумента для git checkout, проверка не переключит ветвь (репо HEAD останется прежним). Он просто обновит индекс, чтобы этот файл соответствовал версии этого файла из указанной фиксации. Поскольку вы указали корневой каталог репо, все файлы в индексе будут обновлены в соответствии с указанным commit 49a732c

0
ответ дан 15 August 2018 в 16:42
  • 1
    Благодарю. Однако это просто проверяет все файлы из 49a732c в рабочем дереве; если рабочее дерево имеет новые файлы не в 49a732c, они все равно будут в рабочем дереве после фиксации, поэтому результат не будет идентичен 49a732c. – rkp 14 August 2018 в 01:29
  • 2
    @rkp После этой команды вы можете запустить git clean -df, чтобы удалить все необработанные файлы, которые не игнорируются (те, которые будут отображаться как не проверенные в git status), или git clean -xdf, чтобы удалить все необработанные файлы ( включая файлы, перечисленные в .gitignore). Было бы целесообразно запустить git clean -dn или git clean -xdn соответственно перед , выполняя приведенные выше команды. (-dn или -xdn будут просто печатать, какие файлы будут удалены, без их удаления, чтобы вы могли дважды проверить, что вы не удаляете какой-либо файл, который вы хотите сохранить) – Alderath 14 August 2018 в 09:53

В git нет такой практики, как в вашей картине.

В ситуации, когда вы хотите вернуться в какое-то состояние, вы выполните следующее:

git reset --hard 49a732c

Этот шаг поместит вашу ветвь master в нужное состояние. Если вы хотите сохранить предыдущее состояние ветвления:

git checkout 48ah14s -b archive/my-unrecognized-experiments

Вы все еще можете сделать это после сброса, так как сброс не удаляет фиксации.

PS Ветвление является неотъемлемой частью git. Лучше научить ветви, а затем научить таким сложным (в git) вещам, как вы себе представляли.

0
ответ дан 15 August 2018 в 16:42

Другие вопросы по тегам:

Похожие вопросы: