Git-Commit, das die ursprünglichen Autoren in Git-Schuld nicht überschreibt

Lesezeit: 3 Minuten

Git Commit das die ursprunglichen Autoren in Git Schuld nicht uberschreibt
nookni

Ich habe ein Perl-Skript verwendet, um alle Tabulatorzeichen in einem PHP-Git-Repository zu ändern, und sie alle in 4 Leerzeichen geändert.

$ find -iname \*.php -exec perl -pi -e "s/\t/    /g" {} \

Ich kann diese Änderung mit begehen git commitaber es wird mich als Autor aller geänderten Zeilen darin markieren git blame nachdem dieser Commit gemacht wurde.

Gibt es eine Möglichkeit, diese massive Änderung zu begehen, die mich nicht als Autor der geänderten Zeilen markiert, sondern den ursprünglichen Autor beibehält? Das ist eine Menge Geschichte, die wir in unserem Projekt nicht wirklich verlieren wollen.

Unser Zweck beim Ersetzen von Tabulatoren durch 4 Leerzeichen besteht nicht darin, die Dinge in Git-Blamage anders erscheinen zu lassen, sondern den richtigen PEAR-Codierungsstandards zu folgen. B. keine Tabulatoren, verwenden Sie 4 Leerzeichen für den Einzug.

  • Vielleicht unterstützt der Schuldbefehl eine Option zum Ignorieren von Leerzeichenänderungen.

    – CodesInChaos

    15. Oktober 2010 um 19:23 Uhr

  • @CodeInChaos: ja, -w kernel.org/pub/software/scm/git/docs/git-blame.html. Machen Sie dies zu einer Antwort

    – Gabe Moothart

    15. Oktober 2010 um 19:30 Uhr

  • Notiz: [git blame can now (Q3 2019, Git 2.23) ignore commits](stackoverflow.com/a/57129540/6309à: das könnte hier helfen.

    – VonC

    21. Juli 2019 um 0:26 Uhr

Git Commit das die ursprunglichen Autoren in Git Schuld nicht uberschreibt
CodesInChaos

Es liegt nicht in der Verantwortung des begehen Befehl, um zu entscheiden, wie Leerzeichen behandelt werden, aber die Verantwortung der beschuldigen Befehl, weil es ist beschuldigen die die Unterschiede zwischen den Versionen analysiert, um den Autor jeder Zeile zu ermitteln. Suchen Sie also nach einer Option, um Leerzeichen zu ignorieren beschuldigen:

Die Option -w ist wie folgt definiert: “Leerzeichen ignorieren, wenn die Version des Elternteils mit der des Kinds verglichen wird, um herauszufinden, woher die Zeilen stammen.”
http://kernel.org/pub/software/scm/git/docs/git-blame.html

  • Wir versuchen, guten PEAR-Codierungsstandards zu folgen, die auf 4 Leerzeichen für Einrückungen anstelle von Tabulatorzeichen bestehen. Dies macht die Dinge auch für die Vereinheitlichung über OS / IDE-Implementierungen viel schöner …

    – nookni

    15. Oktober 2010 um 20:22 Uhr

  • Ich glaube du hast meine Antwort falsch verstanden. Ich sage, dass Sie der Schuld sagen sollten, dass sie die Änderungen im Whitespace (und damit indirekt dieses Commit) ignorieren soll, anstatt zu versuchen, das Commit explizit zu markieren, damit es nicht darin erscheint beschuldigen.

    – CodesInChaos

    15. Oktober 2010 um 20:32 Uhr

  • Ja, leider funktioniert Ihre Antwort nur dort, wo die -w Flagge wird tatsächlich verwendet. In IDEs und webbasierten Tools (Github usw.) ist dies nicht der Fall.

    – Timmm

    21. Februar 2017 um 12:27 Uhr

  • @Timmmm, das ist ein Fehler dieser Tools. Melden Sie ein Problem in ihren GitHub-Problemen und fordern Sie auf, dass sie (optional?) Whitespace-Änderungen ignorieren.

    – Bilderstürmer

    20. Juni 2018 um 2:22 Uhr

1645997289 629 Git Commit das die ursprunglichen Autoren in Git Schuld nicht uberschreibt
Jay Parolin

Dank wnoise on git: change styling (whitespace) without change owner/blame? habe ich mir das ausgedacht, um einen willkürlichen Filter für den Git-Verlauf auszuführen, damit Sie den Verlauf so umschreiben können, dass es so aussieht, als wären anstößige Leerzeichen oder andere Probleme aufgetreten Nie begangen, die ursprünglichen Autoren intakt gelassen, aber Ihr Code aufgeräumt: git filter-branch --tree-filter 'git diff-tree --name-only --diff-filter=AM -r --no-commit-id $GIT_COMMIT | php cleanup.php' HEAD

  • Schöner git filter-branch –tree-filter ‘git diff-tree –name-only –diff-filter=AM -r –no-commit-id $GIT_COMMIT | find -iname *.php -exec perl -pi -e “s/\t/ /g” {} \;’ KOPF

    – nookni

    15. November 2010 um 21:25 Uhr

  • @nookni: Bedeutet das, dass Sie diese Antwort endlich verwendet haben? dann sollten Sie diese als akzeptierte Antwort markieren

    – Tobias Kienzler

    23. Februar 2011 um 14:43 Uhr

  • Gibt es in Git Commit keine Möglichkeit, “für jede Zeile im Diff den vorherigen Autor beibehalten” anzugeben? z. B. alle Vorschläge aus einem Style-Linter reparieren und dann die bereinigte Datei übergeben?

    – SwimBikeRun

    23. Februar 2019 um 17:35 Uhr


  • Ich denke, dass etwas mehr Lektüre aus meiner Sicht erforderlich ist. Ich verstehe nicht ganz, wie man das benutzt. Also mache ich meine Commits, die alle meine doppelten Anführungszeichen entfernen und durch einfache Anführungszeichen ersetzen, und führe dann diesen Code aus? Oder führe ich diesen Code aus und ändere sie dann: D

    – Jamie Hutber

    17. April 2019 um 14:57 Uhr

  • @JamieHutber In meinem Beispiel ersetzt das Skript cleanup.php doppelte Anführungszeichen durch einfache Anführungszeichen

    – Jay Paroline

    25. April 2019 um 20:34 Uhr

880610cookie-checkGit-Commit, das die ursprünglichen Autoren in Git-Schuld nicht überschreibt

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

Privacy policy