Benutzer-Werkzeuge

Webseiten-Werkzeuge


programming:git:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
programming:git:start [2019/03/15 15:26]
frank [automatischer Checkout bei Push]
programming:git:start [2019/06/19 09:36] (aktuell)
frank [remote repos]
Zeile 28: Zeile 28:
   git log --author="​Frank Wunderlich"​   git log --author="​Frank Wunderlich"​
  
 +alternativ wer es commited hat (hilfreich für Patches die via "git am" angewendet wurden)
 +
 +  git log --oneline --committer=frank-w
 ==== Commits nach Text suchen ==== ==== Commits nach Text suchen ====
  
Zeile 85: Zeile 88:
    ​renamelimit = 0    ​renamelimit = 0
 </​code>​ </​code>​
 +
 +==== bestimmte Version einer Datei ====
 +
 +  git show <​treeish>:<​file>​
 +
 +man kann die Ausgabe auch an einen externen Editor (hier gedit) senden, jedoch muss man das Syntax-highlighting neu einstellen (da ja keine Datei übergeben wird an deren Endung der Dateityp erkannt wird)
 +
 +  git show <​treeish>:<​file>​ | gedit -
 +
 +alternativ kann man auch die Ausgabe in eine Temporäre Datei leiten und diese öffnen
 +
 +  file=<​file>​
 +  git show <​treeish>:​path/​to/​$file > /tmp/$file
 +  gedit /tmp/$file
 ===== commit ===== ===== commit =====
  
Zeile 169: Zeile 186:
 (holt die Änderungen vom remote und rebased die eigenen "​on-top"​) (holt die Änderungen vom remote und rebased die eigenen "​on-top"​)
  
-oder+oder (remote mit lokal mergen inkl. merge-commit)
  
   git pull   git pull
  
 +oder (lokalen branch mit dem remote überschreiben)
 +
 +  git reset --hard origin/​branch
 ===== merge ===== ===== merge =====
  
Zeile 224: Zeile 244:
 sollen komplette Datei-Änderungen übernommen werden, einfach via "git add <​datei>"​ +commit sollen komplette Datei-Änderungen übernommen werden, einfach via "git add <​datei>"​ +commit
  
-sollen nur bestimmte Patch-Bereiche übernommen werden mit "git add -i" arbeiten+sollen nur bestimmte Patch-Bereiche übernommen werden mit "git add -p" arbeiten 
 + 
 +==== Basis aktualisieren ==== 
 + 
 +Angenommen,​ein Feature-branch basiert auf master und am master ändert sich etwas. Manchmal ist es sinnvoll oder nötig,den master-teil des Feature-branches auf den aktuellen Stand zu bringen. 
 + 
 +  git rebase master 
 + 
 +Im feature-branch durchführen. Evtl. Vorhandene Konflikte auflösen (editieren,​git add datei,git rebase --continue)
  
 ===== aufräumen ===== ===== aufräumen =====
Zeile 234: Zeile 262:
  
 https://​stackoverflow.com/​questions/​4826639/​repack-of-git-repository-fails https://​stackoverflow.com/​questions/​4826639/​repack-of-git-repository-fails
 +
 +===== whitespace-fix =====
 +
 +  #make sure no patch-files are in your current directory ​
 +  git format-patch sha1^
 +  git checkout sha1^
 +  git checkout -b branch-ws
 +  git am --whitespace=fix *.patch
 +  ​
 ===== Branch ===== ===== Branch =====
  
Zeile 366: Zeile 403:
  
   git am mbox.patch   git am mbox.patch
 +  #​whitespace-fix
 +  git am --whitespace=fix *.patch
  
 interessant wird es, wenn ein Patch fehlschlägt. normalerweise bricht git dann ab und man muss den gesamten Patch der jeweiligen Mail manuell importieren. Ich behelfe mir mit der folgenden Vorgehensweise:​ interessant wird es, wenn ein Patch fehlschlägt. normalerweise bricht git dann ab und man muss den gesamten Patch der jeweiligen Mail manuell importieren. Ich behelfe mir mit der folgenden Vorgehensweise:​
Zeile 392: Zeile 431:
 hier sieht man, dass ein Patch in arch/​arm/​Kconfig fehlgeschlagen ist. Dabei wird eine rej-Datei mit gleichem Namen angelegt (wie beim normalen Patch, nur git sagt es nicht). In dieser Datei ist jetzt nur der Abschnitt (Chunk) der nicht eingebracht werden kann. Dieser muss jetzt manuell eingefügt werden und danach sollte rej-Datei gelöscht werden. Das wiederholen für jede Datei die nicht komplett gepatcht werden konnte. hier sieht man, dass ein Patch in arch/​arm/​Kconfig fehlgeschlagen ist. Dabei wird eine rej-Datei mit gleichem Namen angelegt (wie beim normalen Patch, nur git sagt es nicht). In dieser Datei ist jetzt nur der Abschnitt (Chunk) der nicht eingebracht werden kann. Dieser muss jetzt manuell eingefügt werden und danach sollte rej-Datei gelöscht werden. Das wiederholen für jede Datei die nicht komplett gepatcht werden konnte.
  
-sind alle Patches angewendet, müssen die Änderungen noch übernommen werden (in das staging) via "git add <datei/verzeichnis>"​+sind alle Patches angewendet, müssen die Änderungen noch übernommen werden (in das staging) via "git add <​verzeichnis/datei>"
  
 zum Schluss wird "git am --continue"​ aufgerufen um den aktuellen Commit abzuschließen und ggf. mit dem nächsten anzufangen zum Schluss wird "git am --continue"​ aufgerufen um den aktuellen Commit abzuschließen und ggf. mit dem nächsten anzufangen
Zeile 415: Zeile 454:
 </​code>​ </​code>​
  
 +==== fremdes repo einbinden und branches nutzen ====
 +
 +<​code>​
 +git remote add vdorst https://​github.com/​vDorst/​linux-1.git
 +git fetch --all
 +git log --oneline vdorst/​5.0-phy
 +git checkout vdorst/​5.0-phy #​losgelöster head, da branch lokal noch nicht existiert
 +git checkout -b 5.0-phy #branch lokal anlegen
 +git push --set-upstream origin 5.0-phy #ins eigene remote-repo pushen
 +</​code>​
 ==== mehrere Push-Repos ==== ==== mehrere Push-Repos ====
  
Zeile 494: Zeile 543:
 ==== Alias ==== ==== Alias ====
     git config alias.co checkout     git config alias.co checkout
 +    git config --global alias.ren '!f() { echo \"​$1\"​ \"​$2\";​ }; f'
 +
 +Beispiel Branch umbenennen:
 +
 +  git config --global alias.ren '!f() { git branch -m $1 $2;git push origin :$1 $2;git push origin -u $2; }; f'
  
 alternativ: alternativ:
Zeile 510: Zeile 564:
  
   git config --global --add color.ui true   git config --global --add color.ui true
 +  #show whitespace-errors in git diff
 +  git config diff.wsErrorHighlight all
  
 ==== umbenannte Dateien ==== ==== umbenannte Dateien ====
programming/git/start.1552659975.txt.gz · Zuletzt geändert: 2019/03/15 15:26 von frank