git befehle

Eine kleine Zusammenfassung für mich an git Befehlen:


git clone - "erstmailges kopieren des Repos"
git push - "hochladen"
git push -u origin master - '-u git merkt sich die übergebenen Parameter'
git pull - "Änderungen runterladen"
git diff - 'Änderungen ansehen'
git diff --staged - 'Nur Änderungen aus dem Stage bereich'
git reset - 'staged filed entfernen, wird aber nicht gelöscht'
git checkout --[space] - 'Alle Änderungen seit dem letzten Commit verwerfen'
git rm - 'Files werden gelöscht und gleichzeitig dem Staging Bereich "mitgeteilt", das Dateien gelöscht wurden' -> danach noch commiten

Branch:
git branch - 'anlegen eines Branches'
git checkout - 'switch zu anderem Branch'
git merge - 'Um änderung aus einem anderen Branch zu übernehmen, bsp: bugfix integrieren'
git branch -d - 'branch löschen, bsp: nach erfolgreichem Bugfix'

Source
http://try.github.com/

Git auf df

Ich habe gerade im Zusammenhang mit df ein git gebraucht und hier einmal die Schritte step by step.

Update: 06.05.2012  htaccess Rules für .gitignore hinzugefügt

Es wird zurest lokal ein Repository angelegt was dann online verfügbar gemacht wird


git + df

auf dem lokalen Rechner ein neues Projekt anlegen

// git repository erstellen
git init

// wenn git noch nicht eingerichtet wurde
// wird beim Commit genutzt
git config --global user.name "Mein Name"
git config --global user.email meine@email.de

//kontrollieren mit
git config --list

.gitignore erstellen:
Wie man Temp Verzeichnisse behandelt
In Webprojekten hat man oft Temp Verzeichnisse. Die Inhalte dieser möchte man natürlich nicht in seinem Repository haben, aber die Verzeichnisse sollen trotzdem angelegt werden wenn man einen neuen Clone anlegt. Dies kann man mit den folgenden Zeilen in der .gitignore bewerkstelligen.

# tmp verzeichnisse
app/tmp/smarty/compile/*
app/tmp/cache/*
!.gitignore

Das /* am Ende bewirkt das nur Dateien in den Verzeichnissen ignoriert werden und nicht das Verzeichnis an sich. Da Git aber keine leeren Verzeichnisse tracken kann, legt man eine leere .gitignore in die Verzeichnisse und die letzte Zeile !.gitignore ist eine Ausnahme für diese Dateien. Die .gitignore in den Temp Verzeichnissen werden also zum Repo hinzugefügt und damit wird bei einem neuen Clone das Verzeichnis angelegt. Tipp: Wenn man Funktionen hat die Temp Verzeichnisse leeren, sollte man hier eine Ausnahme für .gitignore Dateien hinzufügen. 🙂

Quelle:http://www.phpecho.de/git/git-repository-erstellen-und-mit-den-git-server-verbinden-1300.html

// alle Dateien lokal hinzufügen
git add .

// und einchecken
git commit -m "Erster import"

// repository online schieben
// zuerst in den übergeordneten Ordner wechseln

cd ..

// ein "bare clone" erstellen (nur in ein solches soll man pushen)
git clone --bare meinAngelegtesProjekt/.git meinAngelegtesProjekt.git

//den erstellen Ordner nun auf den Server schieben
// zum Beispiel per scp (console) oder winscp(gui)

//
git remote add origin ssh://sshuser@myserver.com/kunden/xxxxxx_123456/repos/meinAngelegtesProjekt.git

//---------------
# löschen eines eingetragenen remote repos, git remote rm
$ git remote rm origin

# anzeigen welche remote repos eingetragen sind
$ git remote
//---------------

// push un pull nun per
git pull origin master
git push origin master

// bzw :
//---------------
Damit man den Namen und den Branch nicht bei jedem push/pull angeben muss, kann man seine Standards in die git config eintragen. Dann reicht ein einfaches "git push" bzw. "git pull".
view source
print?
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master
$ git pull
$ git push
//---------------

// erreichbar auf einem anderen Rechner

git clone ssh://sshuser@myserver.com/kunden/xxxxxx_123456/repos/meinAngelegtesProjekt.git meinOrdner

Als Grundlage habe ich folgende Seiten genutzt (wirklich sehr lesenswert):
http://www.phpecho.de/git/git-repository-erstellen-und-mit-den-git-server-verbinden-1300.html

und

http://www.railshosting.de/hilfe/git

Update: 06.05.2012
Wenn die Seiten über das Web Erreichbar sind sollten die .git Ordner und dit .gitignore Files nicht erreichbar sein. Dazu folgendes in die htaccess einfügen

 <Files ~ "^\.git">
Order allow,deny
Deny from all
Satisfy all
</Files>

Quelle auch hier:
http://www.phpecho.de/git/deployment-einfach-gemacht-mit-git-hooks-1326.html