Kann Git angewiesen werden, Leerzeichen in ~/.gitconfig zu verwenden?

Lesezeit: 4 Minuten

Wenn ich benutze git config --global <some option> <some value>schreibt Git den entsprechenden Eintrag in my ~/.gitconfigum eins eingerückt Tab. Seit mein ~/.gitconfig versioniert ist und ich möchte, dass es nicht durcheinander kommt, muss ich dann von Hand hineingehen und den Tabulator durch Leerzeichen ersetzen.

Kann Git angewiesen werden, beim Hinzufügen von Einträgen automatisch Leerzeichen zu verwenden ~/.gitconfig?

(Bitte beachten Sie, dass dies nicht über die Einrückung im Code, dass ich bin begehen mit Git, sondern die Einrückung in der Git-eigenen Konfigurationsdatei.)

  • was ist falsch mit tab?

    – David

    17. Oktober 2016 um 16:48 Uhr

  • auch, warum ist Ihr persönlicher ~/.gitconfig in SCM veröffentlicht? ist dein ganzes Zuhause (~) Verzeichnis unter Versionskontrolle? fehlt mir etwas?

    – ddavison

    17. Oktober 2016 um 16:51 Uhr

  • Es gibt keine wirkliche echte Konfigurationsoption, um “git config” anzuweisen, Tabulatoren anstelle von Leerzeichen zu verwenden, aber da Sie erwähnt haben, dass Ihre .gitconfig Teil des Repos ist, könnten Sie einen Filter für Ihre .gitconfig mit der Option clean setzen, um die Erweiterung aufzuheben und dann gitattribute um diesen Filter zu verwenden. Wenn Sie ein Beispiel brauchen, schreibe ich eines auf – ansonsten verwenden Sie einfach Google und landen hier: alexzaytsev.me/2014/10/19/…

    – Rasjani

    17. Oktober 2016 um 16:55 Uhr


  • @sircapsalot Es ist sehr üblich, Sammlungen von Dotfiles zB auf Github zu veröffentlichen. Das habe ich getan. Eine meiner Punktdateien ist ~/.gitconfig; es ist enthalten, weil es viele nützliche Aliase enthält, an denen andere Leute interessiert sein könnten. Sie können das gesamte Repository sehen hier.

    – Radon Rosborough

    17. Oktober 2016 um 17:18 Uhr

  • Wow, die obige Diskussion erinnert sehr an youtube.com/watch?v=SsoOG6ZeyUI

    – Ashutosh Jindal

    17. Oktober 2016 um 18:47 Uhr

Benutzeravatar von Ashutosh Jindal
Ashutosh Jindal

Das hat bei mir funktioniert (beachten Sie, dass es keine Option gibt, wie @rasjani in einem Kommentar betont hat verhindern git daran hindert, bei der Verwendung überhaupt einen Tab einzufügen git config.)


Erstellen Sie den Filter

Ein … kreieren filter um Tabulatoren automatisch in Leerzeichen umzuwandeln, sobald Sie a git add für eine Datei. Dieser Filter wurde erstellt von

git config --global filter.spacify.clean 'expand --tabs=4 --initial'

Die expand Befehl sagt das convert each tab character at the beginning of line to 4 space characters

Daher umfasst die Definition des Filters beides was es tut und für wann es tut es (dh für welche Git-Operation).

(Unter OSX müssten Sie verwenden gexpand nach Coreutils installieren, indem Sie a brew install coreutils)

Das müssten Sie natürlich selbst entscheiden Umfang (--system, --global oder die Vorgabe --local) der obigen Konfiguration.


Geben Sie die Dateien/Pfadmuster an, auf die der Filter angewendet wird

Zum Beispiel für Ihre Repositoryein … kreieren .git/info/attributes mit folgendem Inhalt:

.* filter=spacify

Das sagt das apply the spacify filter to any files that match the pattern .* bevor diese Dateien an das Repository übergeben werden.


Beachten Sie, dass sich das Obige nur auf neue Dateien auswirkt, die dem Repository hinzugefügt werden. Wenn Sie möchten, dass dies für alle vorhandenen Dateien durchgeführt wird, können Sie entweder ausführen expand manuell ODER könnte Git dazu bringen, es für uns so zu tun:

git config --global filter.spacify.smudge 'expand --tabs=4 --initial'
git checkout HEAD -- **

Verwendung der spacify filtern für smudge bewirkt, dass der Filter auf Dateien angewendet wird, die ausgecheckt werden. Nach dem Auschecken sollten Sie eine Reihe von Änderungen an den Punktdateien sehen, bei denen führende Tabulatoren in Leerzeichen umgewandelt wurden. Begehen Sie diese erneut und von nun an die smudge und clean Duo soll Ihre Dotfiles tab-frei halten!


Update – Der Pull-Request!

Hier ist ein Pull-Request für Ihr Repo: https://github.com/raxod502/radian/pull/156

  • Obwohl diese Lösung hilft, möchte ich verhindern, dass Git überhaupt Tabs einfügt. Zum Beispiel der letzte Befehl, den Sie geben (git config --global filter.spacify.smudge ...) Wille selbst Fügen Sie eine Registerkarte in meine ein .gitconfig!

    – Radon Rosborough

    17. Oktober 2016 um 20:05 Uhr

  • Aber diese Registerkarte wird nicht in Ihrem Repository landen, sobald Sie die Änderung übergeben .gitconfig der spacify Filter wird seine schwarze Magie tun. Ich habe meine Antwort aktualisiert, um die Tatsache zu betonen, dass es zum Zeitpunkt des Schreibens keine Option zu geben scheint, um Git zu zwingen, Leerzeichen anstelle von Tabulatoren zu verwenden git config.

    – Ashutosh Jindal

    17. Oktober 2016 um 20:17 Uhr


  • Tja, das macht mich traurig. Ich akzeptiere diese Antwort, da sie das Nächstbeste für jemanden ist, der Leerzeichen verwenden möchte.

    – Radon Rosborough

    18. Oktober 2016 um 3:43 Uhr

1439550cookie-checkKann Git angewiesen werden, Leerzeichen in ~/.gitconfig zu verwenden?

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

Privacy policy