I am bit confused about how these two command works git reset --hard <commit id> and git clean -f
As per my understanding , git clean -f will remove untracked files from working directory and git reset --hard will remove all changes done after commit id passed
Yes, it will delete them. If you pass -f you’re telling it to forcibly do it as well, which is a bit dangerous. Regardless of which option is used, if you have forgotten to commit file/s you meant to commit, the command will just fry them. There’s not going to be anything you can do about it.
It’s normally for doing something like wiping out build directories/files that shouldn’t be committed.
Not quite. --hard will remove any files that have appeared since, so in that respect, yes, it may exhibit similar behaviour. And it will nix all changes to existing files. Without --hard it will unstage all changes made after the commit, which is the command’s normal behaviour.
It is the opposite ofgit add
So if you’ve added some files to be committed that you didn’t mean to, you can run git reset to unstage them, then add the ones you actually wanted to add.
Note you’ll likely get into a mess if you try to go back and unstage commits that were done by other people, but it’s normally fine if it’s just a series of your commits.
Note that if you type
man git-clean
into the terminal that will give you the documentation for git clean, and if you type