Git
Archived
This page has been archived and will receive no further updates.
Helpful documentation
Quick reference
Undo uncommitted local changes
git reset HEAD
git checkout .
git clean -df
Misc
Automatically fetch and merge changes from a git repo (svn update)
cd MYGITREPO
git pull
Git pull without creating a new merge commit
git pull --rebase
Add files to git repo
git add FILE1 FILE2
Remove files from git repo
git rm FILE1 FILE2
Show current changes
git status
Commit changes to repo
git commit -m 'COMMIT MESSAGE'
Ignore changes to specific files in repo
- Create a file called .gitignore in the root of the repo
- Add the path to all the files you want to ignore
- Add and commit .gitignore
Ex:
echo "bin/
gen/" > .gitignore
git add .gitignore
git commit -m "add .gitignore"
Repository of .gitignore templates: https://github.com/github/gitignore
Go back to HEAD after you've checked out a particular revision
git checkout master
Get a particular version of a file from a particular commit
git checkout 40276 my_project/libs/android-support-v4.jar
Stage newly added files
git add .
Undo
Undo uncommitted local changes
git reset HEAD
git checkout .
git clean -df
Push
Push local repo to remote repo
git push -u origin master
Push and track all local branches to remote branches with the same name
git push --all origin -u
To push after this:
git push
Logs
Show a log of commits, one per line
git log --pretty=oneline
Show a log of commits with list of files changed
git log --stat
Show a log of commits with diffs of changes
git log -p
Show the contents of a particular commit
git show COMMIT_ID
Ex:
git show 33f5
(note you don't need to use the entire commit id, only the first few unique characters--at least 4)
Tags
Show which tag you're currently on
git describe
List tags
git tag
Fetch a particular tag
cd MYGITREPO
git checkout TAG_NAME
Create a tag
git tag -a TAG_NAME -m 'TAG MESSAGE'
ex:
git tag -a v1.0 -m 'version 1.0: first production version'
Show the details for a particular tag
git show v1.0
Push local repo to remote repo, including tags
git push -u origin master --tags
Branches
List local branches
git branch
List all available branches (including remote branches)
git branch -a
Switch to a particular branch
git checkout BRANCH_NAME
Create a new branch from the current working directory
git checkout -b BRANCH_NAME
Push newly created branch
git push origin BRANCH_NAME
Create a new branch from a particular commit
git branch COMMIT_ID
Merge a branch back into master
git checkout master
git merge BRANCH_NAME
Setup
Install git (ubuntu)
sudo apt install git
Create a git repo
mkdir MYREPO
cd MYREPO
git init
git remote add origin git@github.com:username/myrepo.git
Retreive a git repo for the first time (svn checkout)
git clone git://example.com/repository.git
Remote operations
List remote repositories
git remote
Remove a remote repository
git remote rm REMOTE_NAME
Add a remote repository
git remote add REMOTE_NAME git://example.com/repository.git
Ex:
git remote add origin git://example.com/repository.git
List remote URLs
git remote -v
Change remote URL
Change remote push URL from https:// to git://:
git remote set-url --push origin git@`git remote -v | grep push | cut -d / -f 3`:`git remote -v | grep push | awk '{print $2}' | cut -d / -f 4-5`
(Does this: git remote set-url --push origin git@github.com:USERNAME/REPOSITORY.git)
That sets just the push URL. To set the fetch URL:
git remote set-url origin https://github.com:USERNAME/REPOSITORY.git