thereza wrote:I guess I'm an old school SVN kind of guy. This distributed repositories notion just seems overkill. I'll check out your post though - didn't notice it before - thanks for pointing it out. So this is what I would like to do, let me know if it's possible.
- create a branch with my version of the code
- allow me to pull in changes from the main tree into mine
- allow the author to pull changes he likes from my code into his
how do I do that?
Sorry, only just read this. I think you already did most of what it takes
If you want to create a public copy of the code on GitHub, which is completely under your control, you create a
fork. This bascially copies everything from the main repository into your fork - not just on client side but in GitHub.
Within your fork, you can still create
branches - e.g. for different features or versions. Think of the branch as something local to a repository while a fork is a global clone or copy. If Juha deleted his repo, your fork would remain. If you deleted your repo, the branches would go away.
Using a fork and one or more branches will allow you to
pull changes from Juha's tree into yours and vice versa. On the GitHub website, the changes can be nicely visualized in a tree view.
To work on files on your machine, you usually
clonethe files (also called clone to desktop) and then you apply your changes. There is also
checkout, but be carful as it overwrites local changes, similar to revert in SVN. I read your rant in the other post, maybe this is what happened? For files you did clone, git can then automatically track the changes and allow you to
commit these later.
To commit files that have not been cloned or checked out before, you
add these to git version control - this is just like import in SVN. Please note that the local changes are not visible to others until you
push these to the remote (GitHub) repository.
Finally, a
pull request is the task which asks others, e.g. Juha, to pull a subset of your changes into the original repository main trunk.
I hope this helps to clarify a few of the concepts.
If you are coming from CVS or SVN, I recommend the following tutorial:
http://git-scm.com/course/svn.html
While this uses commandline, the same applies to GUI client.
Good luck and have fun!