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 [2022-03-04 19:51:45] – [gitattributes] davidgit [2024-06-03 12:12:13] (aktuell) manfred
Zeile 1: Zeile 1:
 ====== Git ====== ====== Git ======
 +
 +Hilfe:
 +  > git --help
 +  > git status
 +  > git pull
 +  > git add *
 +  > git push
 +  > git commit -m "Kommentar"
  
 Git repository klonen (SSH & HTTPS): Git repository klonen (SSH & HTTPS):
Zeile 9: Zeile 17:
   > git config --system init.defaultBranch main   > git config --system init.defaultBranch main
  
-Es gibt 3 Konfigurationsmöglichkeiten: +Es gibt 3 Konfigurationsmöglichkeiten: ''%%--system%%''''%%--global%%'' und ''%%--local%%'' (siehe [[#pfade]]) 
-  * ''--system'' schreibt in die Datei ''/etc/gitconfig'' +
-  * ''--global'' schreibt in die Datei ''~/.gitconfig'' +
-  * ''--local'' schreibt direkt in das **aktuelle repo**+
  
 ===== Git Konfiguration ===== ===== Git Konfiguration =====
 +
 +
 +==== Pfade ====
 +
 +  * **Wichtig**: 
 +  * mehr Informationen: ''git config --help'' oder [[https://git-scm.com/docs/git-config#FILES]]
 +  * Einstellungen nachvollziehen: ''git config --list --show-origin'' (zeigt zu jedem Eintrag den Speicherort an)
 +
 +^ Scope    ^ Allgemein                ^ Linux (Beispiel)                   ^ Windows (Beispiel)                 ^
 +| System   | ''$(prefix)/etc/gitconfig''  | /usr/local/etc/gitconfig           | C:/Program Files/Git/etc/gitconfig |
 +| Global   | ''$HOME/.gitconfig''         | /home/user/.gitconfig              | C:/Users/user/.gitconfig           |
 +| Local    | ''$GIT_DIR/config''          | my-repo/.git/config                | my-repo/.git/config                |
 +| Worktree | ''$GIT_DIR/config.worktree'' | my-repo/.git/config.worktree       | my-repo/.git/config.worktree       |
 +
 +  * System: unter linux gibt diese beiden verbreiteten pfade: ''/usr/local/etc/gitconfig'' und ''/etc/gitconfig''
 +  * Global: ''$XDG_CONFIG_HOME/git/config'' und ''$HOME/.config/git/config'' werden auch unterstützt, aber von ''$HOME/.gitconfig'' überschrieben
 +  * Local: standard, wenn man keine option angibt (z.B. ''%%git config init.defaultBranch main%%'')
 +  * Worktree: sehr selten genutzt, siehe docs
  
  
Zeile 180: Zeile 204:
  
 </code> </code>
 +
  
  
 ==== Linux ==== ==== Linux ====
  
-<code c /etc/gitconfig> +<code ini .gitconfig> 
-[user+[include
-    name Username + path = .gitconfig.d/.gitalias 
-    email = 00000000+Username@users.noreply.github.com + path .gitconfig.d/.gituser
-    signingkey XXXXXXXXXXXXXXXX+
 [core] [core]
 + abbrev = 16
  eol = lf  eol = lf
  autocrlf = false  autocrlf = false
- safecrlf = true + safecrlf = false 
- symlinks = true+ fsmonitor = true
  fscache = true  fscache = true
 + symlinks = false
  preloadindex = true  preloadindex = true
  editor = code --wait  editor = code --wait
- attributesfile = ~/.gitattributes+ attributesfile = .gitattributes
 [init] [init]
  defaultBranch = main  defaultBranch = main
-[http] 
- sslbackend = openssl 
-[credential] 
- helper = manager-core 
-[gpg] 
- program = "C:/Program Files (x86)/GnuPG/bin/gpg.exe" 
 [commit] [commit]
  gpgsign = true  gpgsign = true
 +[fetch]
 + prune = true
 [pull] [pull]
  rebase = true  rebase = true
-[diff] +[push] 
- tool vscode+ autoSetupRemote = true 
 +[log] 
 + abbrevCommit = true 
 +[format] 
 + pretty = oneline 
 +[credential] 
 + helper = manager-core 
 + gitHubAuthModes = pat 
 + gitLabAuthModes = pat 
 +[http] 
 + sslbackend = openssl 
 +[gpg] 
 + program = gpg 
 +[diff "astextplain"
 + textconv astextplain
 [difftool] [difftool]
  prompt = true  prompt = true
 +[mergetool]
 + prompt = true
 +[diff]
 + tool = vscode
 +[merge]
 + tool = vscode
 [difftool "vscode"] [difftool "vscode"]
  cmd = code --wait --diff $LOCAL $REMOTE  cmd = code --wait --diff $LOCAL $REMOTE
  keepBackup = false  keepBackup = false
-[merge] 
- tool = vscode 
-[mergetool] 
- prompt = true 
 [mergetool "vscode"] [mergetool "vscode"]
  cmd = code --wait $MERGED  cmd = code --wait $MERGED
Zeile 228: Zeile 266:
 </code> </code>
  
 +<code ini .gitconfig.d/.gitalias>
 +[alias]
 + a = add
 + b = branch
 + c = commit
 + cam = commit --amend
 + camne = commit --amend --no-edit
 + diffs = diff --staged
 + f = fetch
 + l = log --format='%C(yellow)%h%C(auto)%d%C(yellow):%Creset %s %C(brightblue)(%cr) %C(brightmagenta)<%an>'
 + la = l --all
 + lag = l --all --graph
 + last = l --all --graph -7
 + lg = l --graph
 + p = push
 + s = status
 + t = tag
 + unstage = reset HEAD --
  
-==== Windows ====+</code>
  
-<code c ~/.gitconfig>+<code ini .gitconfig.d/.gituser>
 [user] [user]
     name = Username     name = Username
-    email = 00000000+Username@users.noreply.github.com+    email = 00000000+username@users.noreply.github.com
     signingkey = XXXXXXXXXXXXXXXX     signingkey = XXXXXXXXXXXXXXXX
-[core] +</code> 
- eol = lf + 
- autocrlf = false + 
- safecrlf true +==== Windows ==== 
- symlinks true + 
- fscache true +**Achtung**: keine vollständige Konfiguration, nur Änderungen gegenüber der Datei für Linux! 
- preloadindex true + 
- editor code --wait +Folgende Änderungen an der Linux Konfiguration vornehmen: 
- attributesfile = ~/.gitattributes + 
-[init] +Diese Änderungen sind optional: 
- defaultBranch = main+  * ''http.sslbackend'' (der wert ''openssl'' funktioniert auch unter win, aber ''schannel'' ermöglicht das nutzen von Windows Certificate Stores) 
 +  * Um das Diffbzw. Merge-Tool von Visual Studio zu benutzen: ''diff.tool'', ''merge.tool'', ''difftool "vsdiffmerge".cmd'' und ''mergetool "vsdiffmerge".cmd'' 
 + 
 +<code ini .gitconfig>
 [http] [http]
  sslbackend = schannel  sslbackend = schannel
-[credential] 
- helper = manager-core 
 [gpg] [gpg]
  program = "C:/Program Files (x86)/GnuPG/bin/gpg.exe"  program = "C:/Program Files (x86)/GnuPG/bin/gpg.exe"
-[commit] 
- gpgsign = true 
-[pull] 
- rebase = true 
 [diff] [diff]
- tool = vscode + tool = vsdiffmerge 
-[difftool+[merge
- prompt true + tool vsdiffmerge 
-[difftool "vscode"] +[difftool "vsdiffmerge"] 
- cmd = code --wait --diff $LOCAL $REMOTE+ cmd = \"C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
  keepBackup = false  keepBackup = false
-[merge] +[mergetool "vsdiffmerge"] 
- tool = vscode + cmd = \"C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\vsdiffmerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m
-[mergetool] +
- prompt = true +
-[mergetool "vscode"] +
- cmd = code --wait $MERGED+
  keepBackup = false  keepBackup = false
  trustExitCode = true  trustExitCode = true
Zeile 364: Zeile 413:
 ==== GPG konfigurieren ==== ==== GPG konfigurieren ====
  
-  * immer lange version der keyid anzeigen +siehe [[::EDV:GPG (GnuPG)]]
-  * loopback für pinentry benutzen (nur auf windows, wenn man kein popup fenster möchte; auf linux besser **pinentry-curses** benutzen)+
  
-<code c ~/.gnupg/gpg.conf> +gpg programm unter linux: 
-keyid-format long +  git config --global gpg.program gpg
-pinentry-mode loopback +
-</code>+
  
-  cache ttl für passphrase (separat für ssh) +**stark empfohlen, da das in git integrierte gpg nicht aktuell ist:** 
-  loopback pinentry erlauben +gpg programm unter windows (''%%winget install -e --id GnuPG.GnuPG%%''): 
- +  > git config --global gpg.program "C:/Program Files (x86)/GnuPG/bin/gpg.exe"
-<code c ~/.gnupg/gpg-agent.conf> +
-default-cache-ttl 7200 +
-default-cache-ttl-ssh 1800 +
-max-cache-ttl 28800 +
-max-cache-ttl-ssh 7200 +
-allow-loopback-pinentry +
-</code> +
- +
-**Unter Windows: ** Umgebungsvariable anlegen +
-  GNUPGHOME=%userprofile%\.gnupg +
- +
-evtl. Dateien vom alten ins neue dir verschieben (powershell commands) +
-  > mv $env:userprofile/AppData/Roaming/gnupg/* $env:userprofile/.gnupg/ +
-  > rm $env:userprofile/AppData/Roaming/gnupg/ +
- +
-gpg agent restart bzwstart/stop (z.B. bei dem error: **gpg: can't connect to the agent: Invalid value passed to IPC**) +
-  > gpg-connect-agent /bye +
-  > gpg-connect-agent killagent /bye +
- +
-das ''/bye'' verhindert, dass man in dem prompt von gpg-connect-agent bleibt +
- +
-**gpg testen** +
-  > echo "test" | gpg --clearsign +
- +
-Wenn das Signieren mit GPG nicht geht, liegt es womöglich daran,  +
-dass GPG die TTY nicht findet und deshalb nicht nach der Passphrase fragen kann +
-  > echo 'export GPG_TTY=$(tty)' >> ~/.bashrc +
- +
-gpg key paar generieren: +
-  > gpg --full-generate-key +
- +
-  * RSA and RSA und 4096 auswählen +
-  * GitHub Namen und GitHub E-Mail eintragen +
- +
-gpg key editieren: +
-  > gpg --edit-key XXXXXXXXXXXXXXXX +
- +
-gpg public key auflisten +
-  > gpg -k --keyid-format=long +
- +
-gpg private key auflisten +
-  > gpg -K --keyid-format=long+
  
 gpg **signingkey** für git herausfinden (16-stellig, steht hinter ''%%sec   4096R/%%'' oder ''%%sec   rsa4096/%%''): gpg **signingkey** für git herausfinden (16-stellig, steht hinter ''%%sec   4096R/%%'' oder ''%%sec   rsa4096/%%''):
Zeile 431: Zeile 435:
   > git config --global commit.gpgsign true   > git config --global commit.gpgsign true
  
-gpg key im armor (asciiformat exportieren (z.b. für github):+gpg public key im ascii format (armored) exportieren (z.b. für github):
   > gpg --armor --export XXXXXXXXXXXXXXXX   > gpg --armor --export XXXXXXXXXXXXXXXX
- 
-gpg key exportieren und als anderer user wieder importieren (wenn man ohne ''--armor'' exportieren will, sollte man die Standardendung ''.gpg'' statt ''.asc'' benutzen) 
-  > gpg --armor --export-secret-key XXXXXXXXXXXXXXXX > /tmp/private.asc 
-  > su - 
-  > gpg --import /tmp/private.asc 
-  > rm /tmp/private.asc 
- 
-gpg key vertrauen (nach import erforderlich) 
-  > gpg --edit-key XXXXXXXXXXXXXXXX 
-  > gpg> trust 
-  > gpg> save 
-   
- 
-gpg Key lokal exportieren und auf anderer maschine importieren 
-  > gpg --armor --export-secret-key XXXXXXXXXXXXXXXX | ssh other-machine gpg --import 
- 
-gpg key auf anderer maschine exportieren und lokal importieren 
-  > ssh other-machine gpg --armor --export-secret-key XXXXXXXXXXXXXXXX | gpg --import 
- 
-gpg programm unter linux: 
-  > git config --global gpg.program gpg 
- 
-**stark empfohlen, da das in git integrierte gpg nicht aktuell ist:** 
-gpg programm unter windows (''%%winget install -e --id GnuPG.GnuPG%%''): 
-  > git config --global gpg.program "C:/Program Files (x86)/GnuPG/bin/gpg.exe" 
  
  
/home/http/wiki/data/attic/git.1646423505.txt · Zuletzt geändert: von david