Benutzer-Werkzeuge

Webseiten-Werkzeuge


git

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
git [2016/05/25 09:04] – [Prüfen, ob Branch einen Commit enthält ] olligit [2023/02/19 20:34] (aktuell) – [Alle Commits eines Autors anzeigen] olli
Zeile 193: Zeile 193:
 </code> </code>
 Der Name muss nicht vollständig angegeben werden. Der Name muss nicht vollständig angegeben werden.
 +Statt des Namens kann auch eine Email-Adresse (oder ein Teil davon) angegeben werden.
 Um nicht nur den aktuellen Branch, sondern alle zu durchsuchen, kann der Parameter ''%%--%%all'' hinzugefügt werden.   Um nicht nur den aktuellen Branch, sondern alle zu durchsuchen, kann der Parameter ''%%--%%all'' hinzugefügt werden.  
  
Zeile 204: Zeile 205:
 Commits, die über einen Rebase oder Cherry-Pick ins Repo gekommen sind, werden so nicht gefunden.   Commits, die über einen Rebase oder Cherry-Pick ins Repo gekommen sind, werden so nicht gefunden.  
 </WRAP> </WRAP>
 +
 +===== Autor nachträglich ändern =====
 +Um den Autor oder die Emailadresse nachträglich zu korrigieren, müssen folgendene Schritte durchgeführt werden:
 +   * [[https://gist.github.com/octocat/0831f3fbd83ac4d46451|Skript]] herunterladen und ausführbar machen
 +   * Emailadressen im Skript anpassen
 +   * Skript ausführen
 +   * Änderungen pushen
 +
 +<WRAP important round>
 +Diese Operation schreibt die History neu.
 +Wenn die Commits schon öffentlich sind, sollte man dies nur in Ausnahmefällen tun.
 +</WRAP>
 +
 +===== Sparse Checkout =====
 +Um nur Teile (z.B. ein Unterzeichnis) eines Repositories auszuchecken, kann ein sog. Sparse Checkout gemacht werden:
 +  * https://unix.stackexchange.com/a/468182
 +  * https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout/
 +
 +===== Branch in eigenes Repository =====
 +Um einen Branch ''branch-to-move'' in ein eigenes Repository zu kopieren kann folgendes verwendet werden:
 +<code bash>
 +git push url://to/new/repository.git branch-to-move:new-branch-name
 +</code>
 +''new-branch-name'' ist der Name, den der Branch im neuen Repository gekommen soll.
 +''url%%://%%to/new/repository.git'' ist der Pfad zum git-Repository, dies kann auch ein lokaler Pfad sein.
 +
 +===== Leere Verzeichnisse commiten =====
 +Leere Verzeichnisse lassen sich nicht einchecken, der [[https://stackoverflow.com/questions/115983/how-can-i-add-an-empty-directory-to-a-git-repository/932982#932982|hier]] empfohlenen Workaround ist eine ''.gitignore''-Datei in dem Verzeichnis mit folgendem Inhalt:
 +<code>
 +# Ignore everything in this directory
 +*
 +# Except this file
 +!.gitignore
 +</code>
 +Andere Möglichkeit sind leere Dateien wie ''.keep'' oder ''.gitkeep'' in dem Verzeichnis.
 +Eine Diskussion dazu findet sich auch in obigem Link.
 +
 +===== git pull  oder fetch hängt =====
 +Wenn ''git pull'' oder ''fetch'' hängt, kann man ''git'' mit
 +<code bash>
 +GIT_TRACE=true git pull
 +</code>
 +ein Trace einschalten.
 +Auch die Verwendung des von Github deaktivierten, unverschlüsselten [[https://github.blog/changelog/2022-03-15-removed-unencrypted-git-protocol-and-certain-ssh-keys/| ''git://''-Protokolls]] ruft dieses Verhalten hervor (dies lässt sich im o.g. Trace allerdings nicht erkennen).
 +
 +
 ===== Nützliche Aliases ===== ===== Nützliche Aliases =====
 Diese Aliases können in die ~/.gitconfig eingetragen werden: Diese Aliases können in die ~/.gitconfig eingetragen werden:
Zeile 262: Zeile 309:
  git rebase --whitespace=fix HEAD~ && \  git rebase --whitespace=fix HEAD~ && \
  git reset --soft HEAD~ ; \  git reset --soft HEAD~ ; \
- fi"  + fi"  
 +        #resets binary permission to the ones in the repo 
 +        # from https://gist.github.com/jtdp/5443498 
 +        permission-resetb = "!git diff -p --no-ext-diff --no-color --diff-filter=d | grep -E \"^(diff|old mode|new mode)\" | sed -e \"s/^old/NEW/;s/^new/old/;s/^NEW/new/\" | git apply"
 </code> </code>
  
-git sed ersetzt in allen Dateien im Repository old-name durch new-name (siehe Bespiel). Dies ist sicherer als die entsprechende Lösung mit "find .", da dabei Verwaltungsdateien von Git mit verändert werden können.+''git sed'' ersetzt in allen Dateien im Repository old-name durch new-name (siehe Bespiel). Dies ist sicherer als die entsprechende Lösung mit "find .", da dabei Verwaltungsdateien von Git mit verändert werden können.
  
 Beispiel: Beispiel:
Zeile 274: Zeile 324:
 ===== Links ===== ===== Links =====
   * [[http://git-scm.com/|Git Homepage]]   * [[http://git-scm.com/|Git Homepage]]
-  * [[https://www.atlassian.com/de/git/tutorial|Git Tutorials]]+  * [[https://www.atlassian.com/git/tutorials|Git Tutorials]]
   * [[https://chrisjean.com/git-submodules-adding-using-removing-and-updating/|Git Submodule Tutorial]]   * [[https://chrisjean.com/git-submodules-adding-using-removing-and-updating/|Git Submodule Tutorial]]
  
  
  
git.1464159893.txt.gz · Zuletzt geändert: 2016/05/25 09:04 von olli