Warum .gitconfig [includeIf] funktioniert nicht?

Lesezeit: 1 Minute

Systemeinstellungen:
MacOS Catalina 10.15.6

> git --version
git version 2.24.3 (Apple Git-128)

Datei: ~/.gitconfig :

[user]
    name = nickname
    email = [email protected]
[includeIf "gitdir:~/Business"]
    path = ~/.gitconfig-work

Datei: ~/.gitconfig-work :

[user]
    name = First Last
    email = [email protected]

Ausgabe beim Versuch, die Konfiguration auf dem Terminal zu überprüfen:

(base) MBP-Name:~ myname$ cd ~/Business/
(base) MBP-Name:Business myname$ git config --get user.name
nickname

Ich habe beide relativ ausprobiert ~ und absolut / Pfade entweder für gitdir Und path in der Konfigurationsdatei. Bei jeder Änderung starte ich die Bash neu. Außerdem habe ich mehrere andere Stackoverflow-Fragen ohne Erfolg gelesen. Einige von ihnen schlugen vor, das hinzuzufügen i Option für Groß- und Kleinschreibung, aber das Problem wurde nicht behoben.

Irgendwelche Ideen ?

  • Ist ~/Business/ ein Repository (Arbeitsbaum)? Wenn kein Hinweis: includeIf funktioniert nur in Lagerstätten unter ~/Business/ aber nicht in einem Nicht-Repo-Verzeichnis.

    – promov

    15. November 2020 um 10:33 Uhr

  • @phd Du hattest vollkommen recht. Ich musste “` “gitdir:~/Business”“` in “` “gitdir:~/Business/”“` ändern und den Befehl in einem Repo-Ordner drücken“`. Danke <3

    – Entropiefieber

    15. November 2020 um 10:36 Uhr

  • @entropyfever Das ist hilfreich. Sie sollten es als Antwort hinzufügen … : D

    – Melvin Abraham

    8. Oktober 2022 um 14:54 Uhr

  • Ich habe ein paar Stunden gebraucht, um herauszufinden, warum es nicht funktioniert. Die überschriebene Konfiguration ist nur sichtbar, wenn Sie sich in einem Git-Verzeichnis befinden, ansonsten werden immer die globalen Werte angezeigt.

    – Daniel B

    24. Februar um 4:23 Uhr

Ich habe versucht, die doppelten Anführungszeichen zu entfernen und es erneut einzugeben. komischerweise hat es funktioniert. da habe ich den text aus kopiert https://blog.gitguardian.com/8-easy-steps-to-set-up-multiple-git-accounts/

  • Das war das Problem für mich, der Unterschied zwischen den nicht standardmäßigen Anführungszeichen (” “) und den Standard-Anführungszeichen (” “). Entfernen Sie die ausgefallenen Anführungszeichen und ihre Werke

    – MrInvolved

    26. Juli 2022 um 22:45 Uhr

  • Uuuuuuuuuuuug +1

    – Madbreaks

    6. August 2022 um 18:01 Uhr

Benutzeravatar von BerendPronk
Berend Pronk

Ich selbst hatte auch Probleme mit meiner .gitconfig. Ich habe die Dokumentation ein paar Mal gelesen, Stackoverflow und einige Blogposts durchsucht. Ich habe zwar jede mögliche Lösung dafür ausprobiert: relative Pfade, abschließende Schrägstriche, verschiedene Anführungszeichen usw. Keine der Lösungen, die ich ausprobiert habe, hat tatsächlich funktioniert.

Ich bin an den Punkt gekommen, an dem ich gerade versucht habe, eine Datei mit einzufügen [include]aber auch ohne Erfolg.

Nachdem ich einige Stunden versucht und nach Antworten gesucht hatte, stieß ich auf einen Beitrag, in dem a erwähnt wurde .gitconfig enthalten sein könnte auch a .txt Datei. Ich änderte die Dateien von .gitconfig-{company} Zu gitconfig-{company}.txt und die Pfade in der Datei global umbenannt .gitconfigund alles funktionierte sofort!

Ich hoffe, das funktioniert für Sie und zukünftige Googler.

  • Ich denke der .gitconfig Datei muss auf enden .gitconfigwie .github.gitconfigwas ich benutze

    – mbomb007

    14. September 2022 um 18:59 Uhr


  • Der globale tut es. Aber immer wenn ich versuchte, eine Datei über die [includeIf]musste ich hinzufügen .txt Erweiterung, damit es funktioniert. Ich habe lange gebraucht, um es herauszufinden, da jedes Beispiel sagte, dass es einfach so sein sollte .gitconfig-{company}. Vielleicht ist irgendwo eine Einstellung aktiviert, die dazu führt, dass mein System nur nach überprüft .txt. Vielleicht hat ja auch jemand damit zu kämpfen und findet das so .txt funktioniert auch bei denen 🙂

    – BerendPronk

    16. September 2022 um 7:05 Uhr

  • Hast du versucht .{company}.gitconfig?

    – mbomb007

    16. September 2022 um 13:12 Uhr

  • Könnte das versuchen. Danke für den Einblick. Die Beispiele sagten, dass es keine Rolle spielte, aber es erscheint so logischer. Ich wollte euch nur wissen lassen, dass a .txt Datei reicht auch.

    – BerendPronk

    19. September 2022 um 7:10 Uhr

Dies wirkt sich nur auf zukünftige Projekte aus, die mit git init erstellt wurden. Bisherige Projekte bleiben unverändert

TL;DR

  1. Testen Sie dies unbedingt includeIf bevor Sie davon ausgehen, dass es einfach funktioniert (wie alles andere auch? 🤷‍♀️). Es scheint unter vielen Umständen nicht (sofort) zu funktionieren.
  2. Aus irgendeinem Grund, git nicht abholen die Änderung, bis ich benutze git config um eine zufällige Änderung vorzunehmen. (Hinweis: Ich bin auf win10)

Lange Version

Sehen Sie sich zunächst die anderen Antworten in diesem Beitrag an, da jeder Beitrag zu einem anderen potenziellen Problem beizutragen scheint.

Jetzt ist mir Folgendes passiert (HINWEIS: Ich verwende Windows 10):

  1. Offen ~/.gitconfig und füge den Eintrag hinzu includeIf Eintrag
    • z.B:
      [includeIf "gitdir:~/x/"]
      path = ~/.x.gitconfig
      
  2. Erstellen Sie die benutzerdefinierte ~/.x.gitconfig Datei und überschreiben einige Einstellungen, zB set a.b = c (Stellen Sie sicher, dass es sich von der Standardeinstellung unterscheidet, damit Sie es zuerst testen können.)
  3. HINWEIS: Diese Antwort behauptet, dass dies keine Auswirkungen auf alte Verzeichnisse hat, aber ich habe es nicht getestet.
  4. Gehen Sie in das Verzeichnis (cd ~/x) und testen. Ich habe zB versucht git config a.b und es gab mir den falschen Wert.
  5. Ich erkannte, dass der Ordner noch nicht war git inited, also rannte ich git initund es hat immer noch nicht funktioniert.
  6. Sln: Ich habe eine zufällige lokale Konfigurationsänderung über vorgenommen git config some thing
  7. Nochmals getestet und es funktionierte und nahm danach immer alle Änderungen sofort auf. Es funktioniert jetzt!

Problem

In meinem Fall [includeIf] hat nicht funktioniert, weil meine config auf der ist C: Antrieb (C:\Users\User\.gitconfig), aber meine Arbeitsprojekte sind auf der D: Antrieb (D:\Projects\Work\).

Lösung

In meinem Fall müsste es heißen:

[includeIf "gitdir/i:Work/"]

Anstatt:

[includeIf "gitdir/i:~/Work/"]

Dokumentation

Ich habe viel Zeit damit verbracht, das zu debuggen, aber jedes Mal hat es nicht funktioniert.

Also habe ich mich entschieden zu löschen und neu anzufangen. Folgendes habe ich getan:

Erstellen .gitconfig

[includeIf "gitdir:~/Documents/home/"]
path = ~/.gitconfig.home
[includeIf "gitdir:~/Documents/work/"]
path = ~/.gitconfig.work

Erstellen .gitconfig.work

[user]
name = My Name
email My work email

Erstellen .gitconfig.home

[user]
name = My Name
email My personal email

Dann habe ich git initialisiert (git init) in beiden Ordnern: ~/Documents/work/ Und ~/Documents/home/.

Nach der Initialisierung funktioniert alles wie erwartet.

Ich hoffe, es hilft Ihnen, falls Sie diese Probleme haben.

Getestet in Mac und Windows.

1445850cookie-checkWarum .gitconfig [includeIf] funktioniert nicht?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy