Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

git-only command to restore a directory to a commit state

I would like to restore a whole directory (recursively) from the history of my git repository (exactly like this question).

I know that the right git command is:

git checkout [tree-ish] -- path/to/the/folder

But I have a problem: to restore an existing directory to the state of a commit, the content of the directory should be deleted first. In other case, existing files that didn't exist in the old commit won't be removed. So, to obtain exactly what I want I have to do the following command:

rm -Rf path/to/the/folder
git checkout [tree-ish] -- path/to/the/folder/

(See this answer and comments).

I'd like to know if there is a git-only command to achieve the same behaviour of the two commands above, in order to avoid making a rm manually.

EDIT: I do not want to remove untracked files or clean after the checkout, I do not have them. I want to restore a folder exactly like it was some commit ago, removing added files, restoring removed files and so on.

like image 962
Rowandish Avatar asked Dec 06 '25 08:12

Rowandish


1 Answers

If you want only to avoid manually deleting files then you can create git-command-name file

 #!/bin/bash
 # main, path as argument...
 rm -Rf path/to/the/folder 
 git checkout [tree-ish] -- path/to/t

Put it into user/bin and git will recognised it as git command that you can call with

git command-name [path/to/the/folder]


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!