Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
misc:git [2012/11/30 21:41]
84.56.1.83 angelegt
misc:git [2016/05/19 12:19] (aktuell)
skruppy [GIT]
Zeile 5: Zeile 5:
   * http://​git-scm.com   * http://​git-scm.com
   * [[http://​stackoverflow.com/​questions/​750172/​how-do-i-change-the-author-of-a-commit-in-git|Author names ändern]]   * [[http://​stackoverflow.com/​questions/​750172/​how-do-i-change-the-author-of-a-commit-in-git|Author names ändern]]
 +  * http://​365git.tumblr.com
 +  * http://​theterrorists.org/​~ben/​cheat/​git.png
 +  * http://​eagain.net/​articles/​git-for-computer-scientists/​
 +  * http://​salkuma.files.wordpress.com/​2011/​07/​git-transport.png (workspace, index, remote, ... werlcher befehl arbeitet wo)
 +  * https://​github.com/​ginatrapani/​ThinkUp/​wiki/​Developer-Guide:​-Get-the-Source-Code-from-GitHub-and-Keep-It-Updated/​abbe99abacc7bb5623cdc075424514ffadac2b17
 +  * Sehr guter [[http://​youtu.be/​GYnOwPl8yCE|Vortrag]] ([[https://​speakerdeck.com/​pbhogan/​power-your-workflow-with-git|Slides]])
 +
  
 Zubeginn ist alles leer (Working directory & Index): Zubeginn ist alles leer (Working directory & Index):
Zeile 169: Zeile 176:
   size: 8 flags: 0   size: 8 flags: 0
 </​code>​ </​code>​
 +
 +  * Index ist immer über alle getrackten Dateien. \\ => Untracked files sind nicht im Index. \\ => Sie werden nicht committed.
 +
 +
 +<​code>​
 +$ cp old new
 +</​code>​
 +
 +<​code>​
 +$ git rm old
 +rm '​old'​
 +</​code>​
 +
 +<​code>​
 +$ git add new
 +</​code>​
 +
 +<​code>​
 +$ git status
 +# On branch master
 +# Changes to be committed:
 +#   (use "git reset HEAD <​file>​..."​ to unstage)
 +#
 +#​ renamed: ​   old -> new
 +#
 +# Untracked files:
 +#   (use "git add <​file>​..."​ to include in what will be committed)
 +#
 +# unused
 +</​code>​
 +
 +<​code>​
 +$ git commit -a -m "​renaming"​
 +[master 289cf21] renaming
 + 1 file changed, 0 insertions(+),​ 0 deletions(-)
 + ​rename old => new (100%)
 +</​code>​
 +
 +  * File moves werden nicht protokolliert,​ sondern on-demand heuristisch erkannt
 +
 +  * Ein Commit ist ein eingefrorener Index zustand (über alle getrackten Dateien/​Ordner,​ egal ob geändert oder nicht)
 +  * Da Index \ne Working copy sein kann, sind alle Dateien/​Ordner im Index links auf GIT Objekte
 +
 +===== Wichtige Befehle =====
 +^ Befehl ^ Bedeutung ^
 +| ''​git add -p <​file>''​ | Wähle aus //welche// Änderungen in den Index sollen |
 +| ''​git diff [<​file>​]''​ | Working coppy VS. Index (of a file) |
 +| ''​git diff --cached [<​file>​]''​ | Index VS. HEAD (of a file) |
 +| ''​git log [<​file>​]''​ | Commit history (of a file) |
 +| ''​git show <​ID>''​ | Commit message + diffs |
 +| ''​git cat-file -p <​ID>''​ | Zeige GIT Objekte aus dem object strorre |
 +| ''​git clone <​URL>''​ \\ ''​git submodule init''​ \\ ''​git submodule update''​ | Repo mit submodulen inizialisieren (clonen) \\ (submodule müssen extra explizit behandelt werden) |
 +
 +===== Dateistruktur =====
 +==== Objects ====
 +''/​objects/<​xx>/<​xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>''​
 +
 +Können entweder mit
 +  for x in t s p ; do git cat-file -$x 3d646c3d1bf84007c93ab1d78e7f6941ef65bdc2 ; done
 +oder mit 
 +    perl -MCompress::​Zlib -e 'undef $/; print uncompress(<>​)'​ .git/​objects/​28/​9cf21ee611ca2c335fa77f48f4613bd5255aa3
 +angeschaut werden ​   ​
 +
 +==== Refs ====
 +''/​refs/''​
 +
 +In Ordnern sind files die einen Hash enthalten. Somit Wird einem GIT object ein Name gegeben.
 +
 +''/​HEAD''​
 +
 +Referenz auf eine file in ''/​refs''​. Ist link auf den //aktuellen HEAD// des //aktuellen branches// und somit indirekt auf den letzten commit.
 +==== Tags ====
 +''/​refs/​tags/<​tag name>''​
 +
 +<tag name> ist eine datei die den Hash eines der follgenden Objekte enthält
 +^ Was ^ Tag typ ^
 +| tag object | Annotiated Tag |
 +| blob object | Leightweight Tag |
 +| tree object | ::: |
 +| commit object | ::: |
 +
 +  * Ein tag object kann auf alle //4// Typen (auch tags selbst) wieder verweisen
 +  * Nur annotiated tags können commitet werden (sie sind ja schließlich eigene objekte. Commits als tags könnten nicht vom commit selbst unterschieden werden)
 +  * Annotiated Tags werden standartmäsig //nicht// committed (???)
 +  * Annotiated tags sind zu bevorzugen, da dort u.a. auch der ersteller gespeichert wird.
 +
misc/git.1354308112.txt.gz · Zuletzt geändert: 2012/11/30 21:41 von 84.56.1.83