Git Commands¶
Useful Git commands that build on top of the add, commit, and push workflow.
File Specifiers
File specifiers are used in commands like add
, restore
, and rm
to specify which file(s) to apply to.
Specifier | Description |
---|---|
-u |
Files in the remote repository that were modified in the current directory |
. |
Everything new or modified in current directory |
<path/to/directory> |
Everything new or modified in a directory |
<path/to/file> |
New or modified file |
Use git status
to check if the command had the desired outcome.
cherry-pick¶
Cherry picking is useful but not always best practice. It can create duplicate commits, and merging would be preferred in most scenarios. To avoid duplicate commits I do not merge the branch with the commit(s) I am cherry picking into the main branch. I use cherry picking to clean up a branch's commit history when changing which branch its PR is merging into.
Command | Description |
---|---|
git cherry-pick <commit hash> |
Add commit to the current branch |
git cherry-pick <commit A hash>^..<commit B hash> |
Add commits from A to B inclusive, where A is older than B, to the current branch |
log¶
Command | Description |
---|---|
git log |
Check the commit history of the current branch |
mv¶
Sometimes after moving a file and making changes to it Git isn't able to detect that the file was moved.
Instead, it thinks the file was deleted and a new one was created, which wipes its file history.
To preserve file history, commit the move before making any changes to the file.
This is most easily done with the git mv
command.
Command | Description |
---|---|
git mv <src> <dest or dest directory> |
Like mv but stages the move |
reset¶
Undo committed (but not pushed) changes.
Command | Description |
---|---|
git reset HEAD~1 |
Unstage the changes made in last commit, but do not modify the files |
git reset --hard HEAD~5 |
Undo the changes made in the last 5 commits |
restore¶
Undo uncommitted changes.
Command | Description |
---|---|
git restore <file specifier> |
Revert files to their state on the remote repository (delete local changes) |
git restore --staged <file specifier> |
Unstage/un-add files |
rm¶
Remove files
Command | Description |
---|---|
git rm <file specifier> |
Remove files from Git and delete them |
git rm --cached <file specifier> |
Remove files from Git but do not delete them |
stash¶
Stash uncommitted changes so that you can pull or switch branches.
Command | Description |
---|---|
git stash |
Stash changes |
git stash pop |
Restore changes |