2012-04-19 7 views
6

Oftmals möchte ich einige Codezeilen modifizieren, um das Debuggen zu vereinfachen, aber ich möchte sie eigentlich nicht übernehmen. Zum Beispiel deaktiviere ich einige störende Funktionen (wie Anzeigen), indem ich einige Zeilen Code auskommentiere, oder ich setze die Log-Level und Filter auf nur diejenigen, die mir wichtig sind, oder ich erzwinge, dass eine Bedingung wahr ist Nur so läuft der Block des Codes, den ich ausführen möchte, tatsächlich die ganze Zeit.Git: Wie verhindert man die Übertragung von Dateien, die nur für Debugging-Zwecke modifiziert wurden?

In Perforce hätte ich eine "Änderungsliste" für diese Dateien erstellt und als "NICHT KOMMEN!" Gekennzeichnet. Was wäre das Äquivalent in Git? Eine Verzweigung funktioniert nicht, da diese Debug-Only-Änderungen mit anderen Änderungen vorhanden sein müssen, die ich gerade mache.

Antwort

0

Vielen Dank für die Antworten. Was ich am Ende getan habe, ist das Schreiben eines Pre-Commit-Hooks in Git, der nach der Zeichenfolge "dont commit" (und anderen Variationen) in jeder der Dateien sucht. Wenn dies der Fall ist, schlägt die Übertragung fehl, und ich muss diese Zeilen vor der Übergabe bearbeiten. Dies liegt daran, dass Debug-Code pro Zeile und nicht pro Datei behandelt werden sollte, da einige Dateien sowohl Debug-Änderungen als auch echte Änderungen aufweisen, die festgeschrieben werden müssen. (meine alte Lösung mit notgedrungen hat dieses Problem nicht angesprochen).

5

Suchen Sie die Option --assume-unverändert. Es gibt einen Blog-Artikel about this, der die Dinge ziemlich gut erklärt. Und auch this one, die das Finden solcher ignorierten Dateien später erwähnt.

+0

der zweite Link hat eine nette und einfache Erklärung –

1

Was ich normalerweise mache, ist einfach den Debug-Code in seine eigene Commit und setzen Sie das Commit später zurück. Eine kompliziertere Lösung besteht darin, einen Zwischenzweig von master zu machen, nennen Sie ihn debug. Nehmen Sie alle Ihre Debug-Änderungen im Zweig debug vor, und stellen Sie dann Ihren Feature-Zweig von debug. Wenn Sie bereit sind, die Debug-Änderungen zu entfernen, erstellen Sie einfach einen Feature-Zweig auf master.

0

Sie wollen diese Dateien nicht ignorieren, aber diese Änderungen ignorieren.

Ich sehe zwei Lösungen hier:

  1. wiederherstellen HEAD

Der Befehl Ich bin für eine solche Situation mit ist:

git checkout -- file ... 

Mit allen Dateien, die Sie für das Debuggen geändert Zweck.

Hiermit wird die Datei ab HEAD wiederhergestellt. Dann können Sie sicher Ihre git commit -a oder was auch immer machen.

  1. Tells git Sie fragen, was (pro Datei) zu begehen ändert

    git add -p.

Siehe #1085162.

Aber Sie müssen immer noch Ihren Debugging-Code entfernen.

0

Eine der Lösungen, die nicht universell ist, aber zu einigen Workflow-Szenarien passen kann, besteht darin, die Vorab-Filter von Git anzuwenden (, manual + samples).Kurz gesagt, es ist nur ein Vorverarbeitungswerkzeug, das vor dem eigentlichen Commit über alle festgeschriebenen Dateien aufgerufen wird. Sie könnten diesen Mechanismus haben, um bestimmte Muster wie //<NOCOMMIT ... //NOCOMMIT> oder was auch immer Sie mögen abzustreifen. Nachteil ist, dass diese Debug-Zeilen beim Zurücksetzen auf ein Commit oder sogar Ziehen/Zusammenführen verschwinden können (ich habe das nicht überprüft).

Verwandte Themen