git repo op andere computer?
Ik heb de volgende situatie, heb dus een GIT repo die staat op een andere computer. Nu probeer ik mijn GIT repo hier ook op deze computer binnen te halen maar het wil niet echt lukken.
Ik probeerde het volgende:
Code (php)
1
2
3
2
3
git init
git remote add origin https://github.com/rvandenberge/Framework.git
git pull origin master
git remote add origin https://github.com/rvandenberge/Framework.git
git pull origin master
Maar die pull haalt helemaal niks binnen in m'n directory... iemand die me kan helpen?
Raoul
Probeer git clone
Nu wordt er een mapje Framework aangemaakt in de wamp/www map. Deze map is gewoon een kopie van je repository. (merk op dat ik de url ook veranderd heeft, je zal straks zien waarom)
Vervolgens heb je nog geen andere branches (wat overigens eerder slecht is dan goed), dus daar hoef je je geen zorgen over te maken.
Nu moeten we nog even de remote urls goed instellen, als we de remotes nu tonen zien we dit:
Code (php)
1
2
3
2
3
$ git remote -v
origin http://github.com/rvandenberge/Framework (push)
origin http://github.com/rvandenberge/Framework (fetch)
origin http://github.com/rvandenberge/Framework (push)
origin http://github.com/rvandenberge/Framework (fetch)
Voor fetch is dit goed, daar hoeven we geen SSH verbinding voor te hebben, voor push moeten we wel een ssh verbinding hebben. Wat je dan doet is gewoon even die URL veranderen:
Code (php)
1
$ git remote set-url --push origin https://[email protected]/rvandenberge/Framework.git
Als je nu de remotes toont zul je zien dat ze allebei goed zijn.
Nu moet je een nieuwe branch aanmaken waarin je gaat werken. Als je aan iets werkt moet je dat altijd in een andere branch dan de master branch doen, in principe is er geen 1 commit (behalve merge commits) die je aanmaakt in de master branch. Stel dat we nu een Repository klasse willen gaan toevoegen, dan willen we bijv. een 'add_repository' branch maken:
Nu kunnen we lekker aan de slag. Nu ben je klaar voor vandaag en dan push je het naar de server:
Nu ga je morgen weer verder op je andere computer en dan zit je met een probleem. Je wilt graag de code van de branch waar je vandaag aan gewerkt hebt hebben. Daarvoor moet je eerst de data fetchen vanaf de server (let op, gebruik nooit pull maar altijd een handmatige fetch + merge):
Nu krijg je te zien welke branches en er veranderd zijn. Deze hebben een prefix van de remote, je krijgt nu dus een 'origin/add_repository' branch. Deze kun je niet veranderen, alleen maar lezen. Als je nu weer aan de slag moet zul je jou eigen branch moeten maken, gebaseerd op 'origin/add_repository':
Nu kun je weer lekker aan de slag en aan het eind van de avond push je weer naar de server:
Nu ga je overmorgen aan de slag op die andere computer. Dan heb je dus een andere situatie, je hebt namelijk al een 'add_repository' branch. In dit geval gaan we gewoon weer de server fetchen:
Nu zien we weer dat de branch 'origin/add_repository' is veranderd. Nu kunnen we het gaan mergen in de huidige branch:
Soms is het zo dat je problemen krijgt, je hebt iets op de andere computer aangepast waar je ook hier wat hebt aangepast. In dat geval zal het mergen stoppen en krijg je te zien in welke bestanden er iets mis is. Je gaat dan naar zo'n branch toe en kijkt of je ergens de merge conflict markers ziet:
Code (php)
1
2
3
4
5
2
3
4
5
<<<<<<< add_repository
$foo = preg_replace('/foo/', 'bar', $foo);
=======
$foo = str_replace('foo', 'bar', $foo);
>>>>>>> origin/add_repository
$foo = preg_replace('/foo/', 'bar', $foo);
=======
$foo = str_replace('foo', 'bar', $foo);
>>>>>>> origin/add_repository
Wat zien we hier nou allemaal? Nou eerst zien we heel wat <'jes om aan te geven dat hier een conflict was. Vervolgens krijgen we de code uit de branch 'add_repository' te zien (aangegeven door wat er achter de < staat). De ='jes geven aan dat hierna de code komt uit de branch 'origin/add_repository' (aangegeven door wat er achter > staat) en de hele reeks >'jes geven weer aan dat het conflict weer eindigt.
In dit geval moet je gaan kiezen welke code je gaat gebruiken en je gaat natuurlijk de laatste code gebruiken, je verwijderd dus alle rijen die niet nodig zijn:
Als je alle bestanden hebt opgelost (dit kun je controleren met 'git status') voer je 'git commit' uit welke het mergen zal eindigen.
Dit is Git in een notendop, ik hoor wel als je vragen hebt!
Wouter hartelijk bedankt! Heb het werkend gekregen. Wist al hoe alles moest met 1 computer, maar niet met 2 computers haha. Zal dit topic bookmarken ter referentie.