У меня есть git-репозиторий с некоторыми коммитами. Я хочу воспроизвести точное состояние рабочего каталога, как оно было сразу после конкретной фиксации (здесь я предполагаю, что я зафиксировал все внесенные изменения).
Я пытался использовать git checkout
, но эта команда не удаляет существующие файлы (которые были добавлены после желаемой фиксации) в рабочем каталоге.
Простой пример, иллюстрирующий мою проблему. Я подготовил репозиторий, используя следующие команды
u@u-desktop:/tmp/git$ git init
Initialized empty Git repository in /tmp/git/.git/
u@u-desktop:/tmp/git$ echo 'ffff' > first.file
u@u-desktop:/tmp/git$ git add first.file
u@u-desktop:/tmp/git$ git commit -m "Important file was added"
[master (root-commit) fb05f7e] Important file was added
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 first.file
u@u-desktop:/tmp/git$ echo 'Second line' >> first.file
u@u-desktop:/tmp/git$ git commit -m "Important data was added" -a
[master df93d04] Important data was added
1 files changed, 1 insertions(+), 0 deletions(-)
u@u-desktop:/tmp/git$ echo 'ssss' > second.file
u@u-desktop:/tmp/git$ git add second.file
u@u-desktop:/tmp/git$ git commit -m "Second important file was added"
[master b6c106a] Second important file was added
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 second.file
u@u-desktop:/tmp/git$ echo 'tttt' > third.file
u@u-desktop:/tmp/git$ git add third.file
u@u-desktop:/tmp/git$ git commit -m "Third important file was added"
[master 33fce06] Third important file was added
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 third.file
Прямо сейчас каталог выглядит так
u@u-desktop:/tmp/git$ ls
first.file second.file third.file
first.file
имеет следующее содержание
u@u-desktop:/tmp/git$ cat first.file
ffff
Second line
Теперь я хочу восстановить рабочий каталог, как он выглядел сразу после первого коммита (fb05f7e
)
u@u-desktop:/tmp/git$ git checkout fb05f7e .
u@u-desktop:/tmp/git$ cat first.file
ffff
Но second.file
и third.file
все еще находятся в каталоге
u@u-desktop:/tmp/git$ ls
first.file second.file third.file