I’ve just started using Git (previously Subversion). I’m having real problems getting my head round being unable to see pushed or pulled changes in the original repository. My ‘architecture’ is this:
MAIN CODEBASE
-->Development repository 1
-->Development repository 2
When I push changes from one of the dev repos back up to the MAIN CODEBASE, I can’t see the changes there.
When I subsequently pull from the MAIN CODEBASE, all the previous changes in that dev repo are overwritten.
I’m clearly missing one or more points here, and I’m getting very confused by documentation that seems to assume I know the ‘obvious’. As it stands, Git seems useless to me and I’m wondering whether to go back to Subversion – it was certainly easier to learn and understand.
It looks like the question Why won’t I see changes in the remote repo after “git push”?
As said, a bare remote repo is better here.
You can setup a non-bare repo in the same place than
MAIN CODEBASE, in order to see the changes in that “non-bare main codebase repo”.Note: with the upcoming Git 1.7,
git pushinto a branch that is currently checked out (i.e. pointed by HEAD in a repository that is not bare) will be refused by default.git pullshould not overwrite anything, at least not without big warnings. Do you see any of those warning messages?As kibitzer aptly describes in the comment:
The fact that this remote repo is “empty” (it only has the
.gitfolder, but no file checked-out) does not mean agit clonewill result in an empty local repo.It will create and check-out an initial branch that is forked from the cloned repository’s currently active branch.
So, the “publication architecture” would be:
Note: if you refer to the Git Glossary, what “origin” means is the default upstream repository.
Bare-main-Repois the “origin”, i.e. the default upstream repo fordev1anddev2, meaning both those repos wll have been created by cloningBare-main-Repo.(Nothing prevents you to add other upstream repos: dev1 could add dev2 as another upstream repo, allowing to pull directly from dev2 for instance)