Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:git

git Micro-Spickzettel

dieser Spickzettel ist "etwas dünn", deswegen empfehle ich auch mal diesen hier weiter: git cheat sheet (von github)


Start

Neues eigenes Projekt lokal anlegen:

  • git init

bestehendes Projekt von einem Server klonen

  • git clone git@git.domain:projekt.git

Dann User + Mailadresse einstellen:

  • git config user.name "Anna Beispiel"
  • git config user.email "anna.beispiel@example.com"
  • mit der Option --global kann man diese Werte auch für alle Projekte einstellen

Welchen Branch hab ich von dem Project?

git branch
* master

Welche Branches gibts auf dem Server?

$ git branch -r
  origin/HEAD -> origin/master
  origin/devel
  origin/master

Den develop-Branch hier lokal registrieren und von remote auschecken

$ git checkout -b devel origin/devel
Branch devel set up to track remote branch devel from origin.
Switched to a new branch 'devel'

Das alles wird in der .git/config-Datei gespeichert:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@git.domain:projekt.git
[branch "master"]
        remote = origin
        merge = refs/heads/master
[branch "devel"]
        remote = origin
        merge = refs/heads/devel
[user]
        name = Anna Beispiel
        email = anna.beispiel@example.com

git-config für 2 Repositories mit unterschiedlichen Branches

Zwei Repositories:

  • für die Veröffentlichung das Repository "release" mit dem Branch "master"
  • für die Entwicklung das Repository "devel" mit den Zweigen "dev" und "integrate"

gedachte Arbeitsweise: Entwickelt wird in dev, zusammengefügt in integrate, veröffentlicht in master.

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "release"]
        url = git@github.com:myuser/myproject.git
        fetch = +refs/heads/*:refs/remotes/release/*
[remote "devel"]
        url = git@github.com:myuser/myproject-devel.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "integrate"]
        remote = devel
        merge = refs/heads/integrate
[branch "dev"]
        remote = devel
        merge = refs/heads/dev
[branch "master"]
        remote = release
        merge = refs/heads/master
[gitg]
        mainline = refs/heads/integrate

Täglich

  • git pull oder git fetch;git merge
  • git status
  • ändern …
  • git diff - Zeig Änderungen, die noch nicht für Checkin markiert sind
    • git diff -cached - Zeig die Änderungen, die für den Checkin markiert sind aber noch nicht eingecheckt sind
  • git add datei.py - Datei in genau diesem Status für Checkin markieren
  • git commit
    • git -m"fix XY with Q" datei.py - schneller Checkin genau dieser Datei mit Kommentar, auch wenn Datei noch nicht mit add markiert ist
    • git commit -v zeigt im Kommentar-Editor den Diff
    • git commit --amend - Ändere den letzten Checkin (Kommentar oder um eine eben noch hinzugefügte markierte Änderung)
  • git checkout -- datei - mache Änderungen an Datei rückgängig
  • git checkout -b newfeature - neuen Branch erzeugen und verwenden
  • git checkout devel - schon bestehenden Branch aufrufen
  • git remote -v - zeig die remote Repositories an + URL
  • git pull - bevor wir pushen, noch feststellen obs Änderungen auf dem remote Repository gab …
  • git push
    • git push <repo> <branch> (z.B. git push origin newfeature) - neuen Branch auf das remote Repository schieben
  • git log -p -2 - zeige Änderungen der letzten 2 Commits (mit Diff)

gelegentlich

  • git tag -a v0.1.3 9fceb02 - nachträglich taggen
  • git push origin v0.1.3 - Tag auf Server schieben
  • git push origin --tags - alle Tags auf Server schieben
  • git rebase --interactive 9fcb02 - alle commits nach 9fcb02 zusammenfassen (es erscheint ein editor-Fenster, alle bis auf den obersten mit "squash" statt pick markieren …)

Git Aliases

Häufig verwendete git Kommandos mit Optionen kann man abkürzen.

Die letzten fünf Änderungen im Gitlog anzeigen, und zwar so dass die letzte Änderung am weitesten unten steht:

so stellt man es ein:

$ git config --global alias.lg5 "log -5 --reverse"

so ruft man es auf:

$ git lg5

und so steht es dann in der eigenen globalen Git Konfigurationsdatei:

# ~/.gitconfig
# ...
[alias]
        lg5 = log -5 --reverse
# ...
de/sysadmin/tools/git.txt · Zuletzt geändert: 2023-02-20 21:42 von hella

Seiten-Werkzeuge

Mastodon Twitter