Verwendung von Git add -A

Lesezeit: 3 Minuten

Benutzer-Avatar
Fragen

ich benutze Husky in meinem ReactJs-Projekt. Die Idee ist, wenn der Benutzer die Änderungen festschreibt, sollten einige Lint-Befehle ausgeführt werden. Dafür habe ich in my hinzugefügt package.json:

    "lint": "next lint --fix",
    "lint:fix": "lint && git add -A .",

Bevor ich die Nachricht übergebe, laufe ich lint:fix. Alles funktioniert.
Auch ich kenne diesen Befehl git add -A . fügt die Änderungen hinzu, wenn sie später auftreten lint Befehl, also wenn der Entwickler festlegt => lint wird die Probleme beheben => und wenn es einige Änderungen gibt, wird Git diese Änderungen automatisch zum Commit hinzufügen, ohne es erneut zu tun git add . und git commit -m ....
Frage: Habe diesen Befehl git add -A . irgendwelche Nachteile und ist es in Ordnung, dort hinzuzufügen?

  • Im Allgemeinen Sie sollte nicht Lauf git add in allen Pre-Commit-Hooks. Du sollen testen was die Benutzer als “Ich beabsichtige, diese Versionen zu übertragen” angegeben hat, und wenn der Test fehlschlägt, verbieten Sie das Festschreiben, während Sie angeben, warum Sie das Festschreiben verbieten. Überlassen Sie es dem Benutzer, irgendeine Art von “Meine Dateien automatisch reparieren”-Operation auszuführen: Der Pre-Commit-Hook ist nur ein Prüferkein Reparateur.

    – Torek

    29. März um 18:00 Uhr

Benutzer-Avatar
VonC

Lassen Sie diesen Befehl git add -A . irgendwelche Nachteile

Zuerst git add . reicht (die -A ist der Standard seit Git 2.x)

Zweitens besteht der Hauptnachteil (im Allgemeinen) darin, dass alles hinzugefügt wird, selbst wenn Sie andere, nicht zusammenhängende Änderungen haben. Es fügt auch neue Dateien hinzu.

In Ihrem Fall (in einem Pre-Commit-Hook verwendet) haben Sie Ihren Index vorbereitet (git add nur die Dateien, die Sie übergeben möchten): die git add . könnte riskieren, hinzuzufügen Sonstiges Dateien, die Sie ursprünglich nicht in Ihren nächsten Commit aufnehmen wollten.


eine andere Frage ist lint-staged (https://npmjs.com/package/lint-staged) das Gleiche wie git add -u in meiner Situation“lint:fix“: “lint && git add -u“?

Das README erwähnt:

Ab v10.0.0 werden alle neuen Änderungen an ursprünglich bereitgestellten Dateien automatisch zum Commit hinzugefügt.

Wenn Ihre Aufgabe zuvor a git add Schritt, entfernen Sie diese bitte.

Das automatische Verhalten sorgt dafür, dass es weniger Race-Conditions gibt, da versucht wird, mehrere zu laufen git Operationen zur gleichen Zeit führen normalerweise zu einem Fehler.

  • Es ist unklar. Wie kann ich haben other unrelated modifications. It also adds new files. ? Ich denke, dass alle Änderungen mit dem Commit zusammenhängen, denn wenn Sie Commit ausführen, werden alle Flusen/schöneren Probleme behoben und danach die Verwendung git add -A. fügen Sie alle zum Commit hinzu. Könnten Sie erklären, wie andere erscheinen könnten unrelated modifications?

    – Fragen

    29. März um 7:09 Uhr

  • @Asking Führen Sie das als Teil eines Pre-Commit-Hooks aus?

    – VonC

    29. März um 7:14 Uhr

  • ja, du hast recht

    – Fragen

    29. März um 7:18 Uhr

  • @Frage OK. Ich habe meine Antwort bearbeitet.

    – VonC

    29. März um 7:27 Uhr

  • könnten Sie mir bitte ein Beispiel geben, wie angezeigt werden kann other files that i did not want initially to include in the commit? Weil ich als nächstes verstehe: 1. Dev commit 2. dann lint:fix läuft 3. Es behebt die Flusen/schöneren Probleme und aufgrund von git add -A . fügt sofort alle Änderungen (eslint/schöner) und Fixes zu meinem Commit hinzu, der zuvor erstellt wurde. Habe ich recht?

    – Fragen

    29. März um 7:33 Uhr


1012010cookie-checkVerwendung von Git add -A

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

Privacy policy