Set the name and email that will be attached to your commits and tags:
$ git config --global user.name "your-username"
$ git config --global user.email "youremail@gmail.com"
Create a local repo (initialize the current directory as a git repo):
$ git init <directory>
Download a remote repo:
$ git clone <url>
Add a file to staging:
$ git add <file>
Stage all files:
$ git add .
Commit all staged files to git:
$ git commit -m "commit message"
Add changes to tracked files to staging:
$ git commit -am "commit message"
To remove a file from your GitHub repository, follow these steps:
-
Remove the file from your local repository using the
git rm
command:git rm <file_path>
-
Commit the changes to your local repository:
git commit -m "Removed <file_path>"
-
Push the changes to your remote GitHub repository:
git push origin <branch_name>
If you want to remove the file from version control but keep it in your local file system, use:
git rm --cached <file_path>
To retrieve a file from a previous commit in your Git repository, follow these steps:
-
Find the commit hash that contains the version of the file you want. Use:
git log --oneline
-
Checkout the file from the specific commit using:
git checkout <commit_hash> -- <file_path>
This command retrieves the version of the file from the specific commit and places it in your working directory.
-
Optionally, commit the changes if you want to keep the retrieved version:
git add <file_path> git commit -m "Reverted <file_path> to version from <commit_hash>" git push origin <branch_name>
To change the remote repository URL in your Git repository, follow these steps:
-
View the current remote URL (optional):
git remote -v
-
Change the remote URL using the
set-url
command:git remote set-url origin <new_url>
-
Verify the change (optional):
git remote -v
master
: Default development branchorigin
: Default remote nameHEAD
: Current branchHEAD^
: Parent of HEADHEAD~4
: 4th commit back from HEAD
List all local branches (add -r
flag to show all remote branches, -a
to show all branches):
$ git branch
Create a new branch:
$ git branch <new-branch>
Switch to a branch and update the working directory:
$ git checkout <branch>
Create a new branch and switch to it:
$ git checkout -b <new-branch>
Delete a merged branch:
$ git branch -d <branch>
Delete a branch, whether merged or not:
$ git branch -D <branch>
Add a tag to current commit (use -a
to tag new releases):
$ git tag <tag-name>
Merge a branch into a branch B (add --no-ff
to avoid fast-forward merge):
$ git merge <branch>
Merge and rebase all commits at once (single commit):
$ git merge --squash <branch>
Rebase feature branch onto main to incorporate new changes made to main (prevents unnecessary merge commits into feature, keeping history linear):
$ git checkout feature
$ git rebase main
Iteratively clean up a branch's commits before rebasing onto main:
$ git rebase -i main
Iteratively rebase the last 3 commits in the current branch:
$ git rebase -i Head~3
Move (and/or rename) a file and stage it:
$ git mv <existing-path> <new-path>
Remove a file from the working directory and from staging area, then stage the deletion:
$ git rm <file>
Reset a file or a commit:
- Reset a file from staging area only:
$ git reset <file>
- Reset the index and working directory to a specific commit (read-only):
$ git reset --hard <commit_ID>
Revert a commit by creating a new commit:
$ git revert <commit_ID>
Restore file to a specific commit (leaves staging alone):
$ git checkout <commit_ID> <file>
List new or modified files not yet committed:
$ git status
List commit history, with respective IDs:
$ git log --oneline
Show changes to unstaged files (to changes of staged files, add --cached
option):
$ git diff
Show changes between two commits:
$ git diff commit1_ID commit2_ID
Store modified and staged changes (to include untracked files, add -u
flag. For untracked & ignored files, add -a
):
$ git stash
As above, but add a comment:
$ git stash save "comment"
Partial stash (stash just single file):
$ git stash push -p
List all stashes:
$ git stash list
Apply stash:
$ git stash apply stash@{1}
Delete stash at index 1 (omit stash@{n} to delete the last stash):
$ git stash drop stash@{1}
Clear all stashes:
$ git stash clear
Add a remote repo:
$ git remote add <alias> <url>
View all remote connections (add -v
to view full URLs):
$ git remote
Remove a connection:
$ git remote remove <alias>
Rename a connection:
$ git remote rename <old> <new>
Fetch all branches from remote repo (no merge):
$ git fetch <alias>
Fetch a specific branch:
$ git fetch <alias> <branch>
Merge fetched changes into current branch:
$ git pull
Push all branches to remote repo:
$ git push <alias> <branch>
This cheat sheet summarizes the most common Git commands and operations. For more detailed information, refer to the official Git documentation.