Git Commands
Git commands
In particular useful with GitHub
Download and Upload Code
Download (fork) a remote repository
git clone remote-url git clone git@github.com:macfreek/some-project.git
Add a second remote site as a branch
git remote add branchname remote-url git remote add camblor https://github.com/macfreek/some-project.git
This will create branches under the macfreek/ prefix, e.g. macfreek/origin, macfreek/v1.4 etc. You need to git pull --all
to download the new branch.
Download (fork) a remote subversion repository
git svn clone --stdlayout url git svn clone http://tvgrabnlpy.googlecode.com/svn
Fetch updates from a remote repository
git pull git pull origin git pull --all
Fetch updates from a remote subversion repository
git svn fetch
Upload committed changes to a remote repository
git push git push origin
Upload committed changes to a remote subversion repository
git svn dcommit
Branching
Create new branch
git branch branchname
Select a branch to work on it
git checkout branchname
Delete a branch
git branch -D branchname
Delete a remote branch
By default branches are not deleted from a remote site, even not with a git push --all
.
git push remotename :branchname git push origin :branchname
Rename a branch
git branch -m oldname newname
Branch Manipulation
Create multiple pull requests (in GitHub)
Imagine you have made four commits, and want to create two separate pull requests.
In this example branch topic1
contains commits B and C, while branch topic2
should only contain commits D and E.
A upstream/master -- B -- C topic1 -- D -- E topic2
Making a pull request for topic1 works as expected, but a pull request for topic2 will contain commits B, C, D and E. Not just D and E.
The solution is to create a new branch and to cherry-pick commits D and E:
git branch -b topic2_req upstream/master git cherry-pick sha1_D sha1_E git push origin topic2_req
Move branch pointer to a different commit
The normal action is to simply delete the old branch, and create a new branch at the desired commit:
git branch -D branch-name git checkout commit-sha1 git branch branch-name
However, if you want to move the master branch pointer, it may be useful to do the following:
git branch -f branch-name commit-sha1