Git Cheat Sheet
by John Vincent
Posted on January 22, 2017
Put in one place those pesky Git options.
Git is a distributed version control system (DVCS), also known as decentralized. This means that every developer has a full copy of the repository, which is hosted in the cloud.
Git Options
Other guides:
Git commands
Some very common requirements
Create local repository
git init
git add .
git commit -m "Message"
git status
git branch
git remote add origin git@github.com:{my-github}/{new-repo}.git
git push -u origin master
git remote -v
git log
Usual edit cycle
git add .
git commit -m "Message"
git push
git log
git log
git log --pretty=oneline
git log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short
git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
git log --all --decorate --oneline --graph
git log --graph --abbrev-commit --decorate --date=relative --all
git log --author="johnvincentio"
Clone repository
git clone url
- Clone repository
Add remote repository reference
git remote add origin git@github.com:{my-github}/{NEW_REPO}.git
Push files to remote repository
git push -u origin master
Verify remote repository
git remote -v
change to new remote:
git remote set-url origin https://github.com/{github-user}/{github-project}
Show the origin file of each config item.
git config --list --show-origin
Clone Branch
Clone master
git clone git@github.com:{github-user}/{github-project}
Clone branch
git clone -b feature_1 git@github.com:{github-user}/{github-project}
Create Feature Branch
Choose a feature branch name that is descriptive, for example:
feature/saved-user
Create a feature branch
cd {git-project-directory}
git checkout -b feature_1
Push to remote
git push origin feature_1
or may need
git push -u origin feature_1
Edit on Feature Branch
- Create your feature branch
git checkout -b feature_1
- Commit your changes
git commit -am 'Add some feature'
- Push to the branch
git push origin feature_1
- Merge or Create a new Pull Request
Pull Request
- make changes to feature branch
git status
to show the changesgit add .
git commit -m "feature changed"
git push origin feature
From the Github repository
- Pull Requests
Should now see feature had recent pushes less than a minute ago
.
- Click
Compare and pull request
which opens a pull request.
- Add a comment
- Create pull request
Notice some pending checks.
Notice some pending checks.
The github pull request:
- will now show all checks have passed.
- Add a comment to the pull request.
- Click
Comment
- Click
Merge pull request
- Click
Confirm merge
- Click
Should now see Pull request successfully merged and closed
Merge Feature Branch
Ensure feature branch is committed.
cd {git-project-directory}
git status
Switch to master branch
git checkout master
Merge feature branch into master
git merge feature_1
Push to remote master
git push origin master
Delete the feature branch
git branch -d feature_1
git diff
Compare local with remote
git difftool
git diff develop:README.md feature1001:README.md
git diff develop feature1001
git diff
- Show differences
git diff HEAD
- Show difference between working directory and last commit.
git diff --cached
- Show difference between staged changes and last commit
git push origin HEAD
- A handy way to push the current branch to the same name on the remote.
git push origin HEAD --dry-run
- used to try push, do everything except actually send the updates.
git reset
git reset
- Reset staging area to match most recent commit, but leave the
working directory unchanged.
git reset --hard
- Reset staging area and working directory to match most recent
commit and overwrites all changes in the working directory.
git reset <commit>
- Move the current branch tip backward to
git reset --hard <commit>
- Same as previous, but resets both the staging area & working directory to
match. Deletes uncommitted changes, and all commits after
git rebase
git rebase -i <base>
- Interactively rebase current branch onto
git pull
git pull --rebase <remote>
- Fetch the remote’s copy of current branch and rebases it into the local
copy. Uses git rebase instead of merge to integrate the branches.
git push
git push <remote> --force
- Forces the git push even if it results in a non-fast-forward merge. Do not use
the --force flag unless you’re absolutely sure you know what you’re doing.
git push <remote> --all
- Push all of your local branches to the specified remote.
git push <remote> --tags
- Tags aren’t automatically pushed when you push a branch or use the
--all flag. The --tags flag sends all of your local tags to the remote repository.
General
git branch -a
- List branches
git tag
- view local tags
git ls-remote --tags origin
- view remote tags
git checkout -- README.md
- undo changes you made to specific files
git remote show origin
- show details of repository
Heroku
For notes regarding git and Heroku, please see Heroku Notes
If no longer require Heroku Git repository
git remote
shows multiple repositories
heroku
origin
Remove Heroku
git remote remove heroku
.gitignore
node_modules
Trouble
Remove .DS_Store from git
Ensure .DS_Store
is in global ignore (see above).
Then remove from git:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Remove .DS_Store
find . -name '.DS_Store' -type f -delete
Git Config Error
cd /Users/jv/Desktop/MyDevelopment/github/repo-react;
. /Users/jv/Desktop/MyDevelopment/github/repo_shell_scripts/mac/git/config
objc[43625]: Class AppleTypeCRetimerRestoreInfoHelper is implemented in both /usr/lib/libauthinstall.dylib (0x1f9335eb0) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1085b44f8). One of the two will be used. Which one is undefined.
Solution
Actually, /usr/lib/libauthinstall.dylib
does not exist.
Try
sudo xcode-select -r