Wenn ich benutze git config --global <some option> <some value>
schreibt Git den entsprechenden Eintrag in my ~/.gitconfig
um 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.)
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
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