Difference between revisions of "Git Commands"

From Exterior Memory
Jump to: navigation, search
(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
 
====Fetch updates from a remote repository====
 
git pull
 
git pull origin
 
git pull --all
 
 
====Download (fork) a remote repository====
 
git clone remote-url
 
git clone git@github.com:macfreek/some-project.git
 
 
====Download a branch from a different remote site====
 
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.
 
 
====Upload committed changes to a remote repository====
 
git push
 
git push origin
 
  
 
====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 16: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