Git Cheat Sheet
- Managing remote repositories (cloud originals)
- Managing branches (copies)
- Managing commits (snapshots)
If you are unfamiliar with git, or need a primer check out Git Basics
Managing Remote Repositories (Cloud Originals)
Copy a remote repository
git clone {repository-link}
git clone https://github.com/python/cpython
- This command clones a remote repository into a folder on your computer within the directory you are in.
cd {repository-name}
- After cloning the repository you need to move into the repository folder.
- The folder name will be the last part of the url you cloned.
- Example:
cd cpython
Updating from Remote
git pull
- This will update your local copy with any changes to that branch that have been pushed to the remote repository.
- This is mainly used on the
main
/master
branch, or if you are working on a branch collaboratively, or on multiple devices. - It is best practice to always
git pull
before you start working to avoid unnecessary merges
Adding new branch to remote repository
git push --set-upstream origin {your-branch-name}
- This will create your branch in your remote repository, so it does not just exist on your computer.
Updating the Remote
git push
- This will push any changes you have committed locally to the corresponding branch in your remote repository.
- You want to do this frequently, so your changes are backed up and you do not lose them if something happens to your computer.
Managing Branches (copies)
Creating a new copy
git checkout -b {your-branch-name}
git checkout -b fix/formatting
- This creates a new copy of all the files in your repository with the name you specify.
- In programming branches will be proceeded with
feature/
, orfix/
depending on what the update is doing, followed by a brief description of what the change is doing. For examplefix/formatting
. - This copies all the files currently in the repository. This means that if you are on a branch other than the original your new branch will have all the changes in that branch. Generally you will want to be in the
main
branch when running this command.
Seeing local branches
git branch
- Displays the names of all the branches you have locally.
Switch branches
git checkout {branch-name}
git checkout main
- Switches to the specified branch.
Merging branches
git merge {update-from-branch-name}
git merge main
- This will pull the updates from the specified branch into your current branch.
- This is useful if there have been updates to the
main
/master
branch and you want to ensure your code works with these changes.git merge main
- Merges of a change branch into the
main
/master
branch will generally be handled online in your remote repository.
Delete branch
git branch -D {branch-name}
- This will delete a branch
Delete all branches other than the default branch
Make sure you are on the default branch
git checkout main
git branch | grep -v '^*' | xargs git branch -D
Delete all branches that have been merged
Make sure you are on the default branch
git checkout main
git branch | grep -v '^*' | xargs git branch -d
Managing Commits (Snapshots)
Seeing changed files
git status
- This command will show you all the files that have been updated in your repository.
- Files highlighted in red have not been added.
- Files highlighted in green have been added.
Seeing differences in files
git diff {file-name}
- This command enables you to see changes within a specific file.
- It will display the additions in green and deletions in red.
Adding changes
git add *
git add {file-name}
git add mysite/mysite/settings.py
- Once you have made changes to files you need to specify the updated files you want to group together in a commit.
- Generally you will use
git add *
, which adds all the changed files, but you can specify individual files by inputting their name,git add mysite/mysite/settings.py
Committing to changes
git commit -m "{what-your-change-does}"
- Before committing changes they only exist locally and their history is not recorded. Committing changes adds them to your version history.
- This will realize all the changes you have added and associate them with a unique identifier and the commit message you input.
Removing changes
git reset --hard
- This command deletes all changes that have not been committed.
- Sometimes you make changes and do not like them and want to start over.
Reverting a commit
git reset HEAD~
- This will remove the last commit you made. Your changes will still be there, but they will no longer be committed.