Archiv der Kategorie: git

Git: Stashes löschen und alle löschen

Änderungen, die später aufgegriffen werden sollen, aber noch nicht in einen Commit wandern, die kann man mit „git stash“ erst einmal zwischenspeichern. Oft wird danach ein „git pull“ ausgeführt und vielleicht die Änderung mit „git stash apply“ wieder zurückgeholt.

Will man den stash löschen, geht das via „git stash drop“. Will man alle Stash-Einträge löschen: „git stash clear“.

Git: Kaputtes Repo neu aufbauen/reparieren

Defektes Filesystem und git pull funktioniert nicht richtig? Dann kann das Repo kaputt sein (Bezug zu parent-Einträgen nicht mehr möglich oder …) Ein meinem Fall kam nach einem git pull der ominöse Hinweis, dass das Repo aus Performance-Gründen optimiert werden sollte. Ein git gc brachte dann Fehlermeldungen. Das Repo war beschädigt.

mv -v .git .git_old &&            # (1)
git init &&                       # (2)
git remote add origin "git@gitlab.infosys.de:etacs/etacs_production.git" && # (3)
git fetch &&                      # (4)
git reset origin/master --mixed   # (5)
git pull                          # (6)
git branch --set-upstream-to=origin/master master # (7)
  1. Altes Repo sichern
  2. Neues Repo initialisieren
  3. Repo mit Remote-Repo verbinden (die URL steht in .git/config – oder nach Sichern .git_old/config))
  4. Repo aktualisieren
  5. Master Branch resetten
  6. Inhalte runterladen (wenn Git sich jetzt beschwert, dann den Upstream setzen -> 7)
  7. Upstream setzen

Apache: Git-Ordner und Dateien mit führendem Punkt nicht anzeigen

Deploy eines Projektes via Git (git pull) hinterlässt den .git-Ordner, der ungewollt viele Informationen preisgeben kann. Ebenso Dateien mit führendem Punkt, die als Temporär-Datei oder Config-Datei sensible Informationen enthalten können.
Um das zu vermeiden folgendes Snippet für die apache2.conf:

<Directorymatch "^/.*/\.git/">
    Order deny,allow
    Deny from all
</Directorymatch>
<FilesMatch "^\.">
    Order allow,deny
    Deny from all
</FilesMatch>
<FilesMatch "(^#.*#|\.(bak|conf|dist|fla|in[ci]|log|orig|psd|sh|sql|sw[op])|~)$">
    Order allow,deny
    Deny from all
</FilesMatch>

Git: Unterordner aus Github herunterladen

Github erlaubt normalerweise nur den kompletten Checkout eines Projektes, was für die Geduld des Users und die Bandbreite des Netzwerkes unbefriedigend ist. Als eines der wenigen Git-Repositories funktioniert aber ein SVN Fallback, der es erlaubt, ein beliebiges Unterverzeichnis herunterzuladen.

Dazu muss auf dem Zielrechner SVN installiert sein (sudo apt-get install subversion).

Der Befehl zum Download:

svn export  https://github.com/medianetix/demo.git/trunk/ordner1/ordner2/

An die https-URL des Repos (demo.git) wird der Ordner „trunk“ angehängt und dann der gewünschte Unterordner (hier: ordner1/ordner2).

Authentication realm: <https://github.com:443> GitHub
Username: medianetix
Password for 'medianetix': ***************

Nach Eingabe Username/Password wird dann der Download der Dateien aus dem entsprechenden Ordner/Unterordner gestartet:

A    ordner2
A    ordner2/.placeholder
A    ordner2/05-06-2018_1138.pdf
A    ordner2/06-02-2018_0547.pdf