I've been communicating with Sheressa about how we use Git and how
Github works in to the phpMyAdmin development workflow. I thought a
portion of my email might be helpful to a wider audience.
Sounds like you're a bit confused about the way
git and github work
-- which is pretty normal when beginning. I'm still not an expert.
In general, any Git repository has the complete commit history, so
any time you `git clone` you get a complete independent copy. So in
github, when you forked the phpmyadmin repository, github did a git
clone of the official phpmyadmin repository (somewhat confusingly
called phpmyadmin/phpmyadmin.git, the first phpmyadmin is the
username and the second is the repository name). Within github, then,
you had the sheressa/phpmyadmin.git repository (often github leaves
off the .git porition when referring to a repository path). So that's
your repository/clone/fork of the phpmyadmin -- and at that moment,
you have the complete phpMyAdmin source code duplicated in your
sheressa github account.
At that point, you would have done a `git clone` of your repository,
checking out the sheressa/phpmyadmin.git repository to your local
computer. Github's instructions provide a way to continue to get
updates from the phpmyadmin/phpmyadmin.git repository, so you'll
continue to get new commits added to your local computer when you
update. So technically, there are three different repositories in
effect: phpmyadmin on github, sheressa on github, and the local
clone. Since this all gets a bit confusing, Git allows you to give
nicknames to these sources; on my system (which I believe I
configured based on the Github documentation) the phpmyadmin one is
'upstream' and the ibennetch one is 'origin' (so I can `git fetch
upstream` and `git push origin`). So basically you'll be making
changes locally and pushing them to sheressa/phpmyadmin.git, then
from there using the Github interface to submit a pull request to the
phpmyadmin/phpmyadmin.git repository. Hope this makes sense so far.
So far I've just talked about repositories; there's a whole other
aspect which is the branches. In phpMyAdmin, development happens on
the 'master' branch and we create a branch at each release, so we
have for instance MAINT_4_1_3 and QA_4_1. When you do development
work, it's generally best to do that in a new branch (which doesn't
affect the phpmyadmin/phpmyadmin.git repository at all and only goes
to sheressa/phpmyadmin.git if you push it there). So we do new
development in 'master' but since branching is so easy with git, we
generally develop something in a temporary branch and then merge it
to master from there.
Hope that helps a bit.