With git you will always retreive a clone of a remote repository. This will contain all the current source files including their full history. This means once you have a cloned repository you can browse through all changesets without being connected to the internet, if the remote would disapear you still have a full copy available locally.
To retrieve this clone you need to git clone. To clone the gtk-gnutella repository you can use the following command: git clone https://github.com/gtk-gnutella/gtk-gnutella.git. Which will output: $ git clone https://github.com/gtk-gnutella/gtk-gnutella.git Cloning into gtk-gnutella... remote: Counting objects: 111280, done. remote: Compressing objects: 100% (20316/20316), done. remote: Total 111280 (delta 90978), reused 111082 (delta 90780) Receiving objects: 100% (111280/111280), 47.27 MiB | 1.32 MiB/s, done. Resolving deltas: 100% (90978/90978), done.
Now that you have cloned the git repository lets enter the newly created directory: cd gtk-gnutella. You are now in your freshly created git clone of gtk-gnutella. We use 2 branches on our public repository, you can view them using the following command: git branch -a. $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/devel remotes/origin/master remotes/origin/v0.93 You will notice master, origin/master and origin/devel, we'll ignore the origin/v0.93 for now.
By default git automatically tracks the origin/master branch in our master branch, to also track the origin/devel branch in a local branch so we can actually use that branch we need to track it locally. To track origin/devel in a local devel branch enter the following command: git checkout -b devel origin/devel $ git checkout -b devel origin/devel Branch devel set up to track remote branch devel from origin. Switched to a new branch 'devel' Now if we do a git branch -a we'll see that there is a new devel branch in the output $ git branch -a * devel master remotes/origin/HEAD -> origin/master remotes/origin/devel remotes/origin/master remotes/origin/v0.93 Notice the * mark before the devel, this means this is the current active branch we are working on. This was done by the command git checkout -b devel/origin/devel which told us "Switched to a new branch 'devel'".
Although we are now tracking 2 remote branches, git branch -a didn't tell us what branch is tracking what. To view your local branches and tell what remote branch it is tracking enter the command git branch -vv. $ git branch -vv * devel ecd14a9 [origin/devel] Added IPv6-Ready implementation. master b401063 [origin/master] vxml_read_char(): removed check made too early. As you see, devel is tracking origin/devel and master is tracking origin/master. Origin is set to our github.com/gtk-gnutella URL, you can view this with git remote -v. $ git remote -v origin https://github.com/gtk-gnutella/gtk-gnutella.git (fetch) origin https://github.com/gtk-gnutella/gtk-gnutella.git (push)
There are currently 2 branches on our public repository:
- master, our stable branch only patches are applied to this branch and is always ready for a release;
- devel, is where all new features are pushed to and might not be release ready.
Use the master branch if you are only interested in the latest fixes. You might want to use this to build a new stable build with all the latest fixes applied. Use the devel branch if you want to help us test our new features or if you can't wait for some of these features to appear in the stable master branch. We need people to test new features and it would be great if you'd test the devel branch and report any issues to us at the bug tracker or by mail at firstname.lastname@example.org.