Git kniffe und Tricks

Erstellt: 06.12.2021 Bearbeitet: 29.09.2024

Einen alten branch Name nach merge neu nutzten

    git checkout master
    git pull
    git branch -d brachname
    git checkout -b brachname
    git push orgin brachname

Das geht aber nur wenn der Brach schon gemerged und gelöscht wurde!

chmod auf ein file im git repro

    git update-index --chmod=+x path/to/file

Um das exec bit zu löschen

    git update-index --chmod=-x path/to/file

Anzeigen von chmod im git index

    git ls-files --stage path/to/file
    cd destdir
    ln -s ../../../existing_file symlinkfile
    git add symlinkfile
    git ls-files -s symlinkfile     # show link
    git cat-file -p linkhash        # show source

Wenn das Zielfile, Git schon bekannt war, muss man es erst aus Git löschen bevor man es mit add hinzufügen kann!

check git config

Zu auflisten der aktuellen config gibt es die --list Option

    git config --list

und zum ändern einer Option kann man sie z.b. mit --global ändern

    git config --global user.name "dein name"

Git das Password speichern erlauben

Git bringt einen einfache Methode zum Password Speichen mit, die allerdings nicht unbedingt sicher ist. Zum aktiveren muss man nur diese Zeile ausführen und Git speichert das pw zum den repros.

    git config --global credential.helper store

nun muss man nur noch einam z.z. ein

    git pull

und er speichert die Zugangsdaten für das nächste mal in dem file ~/.git-credentials in Klartext es ist also ein sehr unsichere Sache.

Alternativ kann man auch nur einen mem cache mit timeout nutzten.

    git config --global credential.helper cache
    git config --global credential.helper 'cache --timeout=3600'

dann hält er das pw nur um Ram und schmeißt es nach dem Timeout weg.

Es existieren auch noch ein Paar andere Metoden, hier eine interesante Zusammenfassung auf stackoverflow.com

git mtime restore

Manchmal braucht man die mtime für Files und wenn man ein file nicht modifiziert hat wird die neue mtime eventuell nicht richtig geseztzt. Für dieses Problem gibt es aber eine einfach Lösung.

    sudo apt install git-restore-mtime
    cd [repo]
    git restore-mtime

Commit log in der shell

git log --graph --all --decorate --oneline --simplify-by-decoration