Difference between revisions of "Git Commands"
(→Move branch pointer to a different commit) |
|||
Line 2: | Line 2: | ||
In particular useful with GitHub | 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 <code>git pull --all</code> 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 | ||
+ | |||
+ | ====Upload committed changes to a remote repository==== | ||
+ | git push | ||
+ | git push origin | ||
+ | |||
+ | ===Branching=== | ||
====Create new branch==== | ====Create new branch==== | ||
Line 17: | Line 43: | ||
git push remotename :branchname | git push remotename :branchname | ||
git push origin :branchname | git push origin :branchname | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
====Rename a branch==== | ====Rename a branch==== | ||
git branch -m oldname newname | git branch -m oldname newname | ||
+ | |||
+ | ===Branch Manipulation=== | ||
====Create multiple pull requests (in GitHub)==== | ====Create multiple pull requests (in GitHub)==== |
Revision as of 17:13, 8 March 2012
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
Upload committed changes to a remote repository
git push git push origin
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