it-swarm.com.de

Wie kann ich git zwingen, den Hauptzweig auszuchecken und Zeilenumbrüche zu entfernen, nachdem ich Dateien mit dem Attribut "text" normalisiert habe?

Okay, also habe ich die Datei .gitattributes Mit solchen Zeilen hinzugefügt

*.css text
*.js text
etc...

Ich folgte dann den Anweisungen unter http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in

$ rm .git/index     # Remove the index to force Git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"

Aber jetzt hat meine Arbeitskopie noch die Wagenrückläufe! Ich habe nicht verfolgte Dateien, die ich behalten möchte. Wie kann ich den Master-Zweig mit den normalisierten Dateien wieder auschecken lassen?

Ich weiß, dass die Dateien im Repository normalisiert sind, da ich beim Klonen des Repos alle Dateien ohne Wagenrücklauf habe.

88
Jason

Ah ah! Auschecken des vorherigen Commits und dann Auschecken des Masters.

git checkout HEAD^
git checkout -f master
232
Jason

Wie bereits erwähnt, kann man alle Dateien im Repo löschen und dann auschecken. Ich bevorzuge diese Methode und sie kann mit dem folgenden Code durchgeführt werden

git ls-files -z | xargs -0 rm
git checkout -- .

oder eine Zeile

git ls-files -z | xargs -0 rm ; git checkout -- .

Ich benutze es die ganze Zeit und habe noch keine Nachteile gefunden!

Zur weiteren Erklärung hängt das -z An das Ende jedes ausgegebenen Eintrags ein Nullzeichen von ls-files An, und das -0 Weist xargs an, die Ausgabe zu begrenzen es wurde von diesen Nullzeichen empfangen.

13
mechsin