Sollte ich jedes Mal Dateien zu Git hinzufügen müssen, wenn ich einen Commit ausführen möchte?

Lesezeit: 3 Minuten

Ich bin neu bei git und komme aus der SVN-Welt. Bisher scheint es viel nützlicher zu sein, aber ich arbeite immer noch an den Knicken.

Momentan sieht mein Workflow so aus:

Änderungen vornehmen > git hinzufügen. > git commit > Protokollnachricht eingeben

Was ich nicht verstehe, ist, warum ich anscheinend alle meine Dateien hinzufügen muss, bevor ich sie festlege. Sie sind bereits unter Versionskontrolle? Warum teilt mir git commit mit, dass dem Commit keine Änderungen hinzugefügt wurden, weist aber auch darauf hin, dass ich Dateien geändert habe? Da steht “Geändert, aber nicht aktualisiert:”. Was bedeutet das??

Tut mir leid, wenn das einfach ist, ich habe das Gefühl, dass ich einen übergeordneten Punkt übersehe

  • Tolle Frage, ich fand das auch sehr verwirrend. Anscheinend “fügen” Sie dem Projekt nicht “hinzu”, Sie fügen dem Commit hinzu!

    – Kokodoko

    9. März 2016 um 12:01 Uhr

Auf diese Weise können Sie Commits nach Bearbeitungen trennen. Wenn Sie diese Dateien jetzt nur unter einem Commit und dann diese nächsten Dateien jetzt unter einem zweiten Commit festschreiben möchten, könnten Sie Folgendes tun:

git add files_under_one_topic
git commit -m "this is about one thing"

git add files_left_over_to_commit_about_a_completely_different_topic
git commit -m "this is about another thing."

  • Es geht sogar noch weiter. Verwenden git add -pkönnen Sie einige Änderungen innerhalb einer Datei bereitstellen, andere jedoch nicht.

    – Phil Müller

    1. Juli 2010 um 20:11 Uhr

  • wow. das ist wirklich mächtig. Gut zu wissen, dass das möglich ist, es wird wahrscheinlich unpraktisch sein, wenn ich es ein paar Mal brauche!

    – Hami

    2. Juli 2010 um 19:50 Uhr

Benutzer-Avatar
Derek Greer

Git funktioniert mit einem „Staging“-Bereich, in dem Sie vorbereiten, was Sie als Commit bündeln möchten. Sie haben also entschieden, welche Menge von Änderungen Sie festschreiben möchten (z. B. alle oder eine Teilmenge), Sie fügen sie der Staging-Area hinzu, und dann schreiben Sie fest, was sich in der Staging-Area befindet.

Wenn Sie aufrufen git statuses zeigt Ihnen, was zum Staging-Bereich hinzugefügt wurde (dh “Zu übertragende Änderungen”), was in den Dateien geändert wurde, die git verfolgt (dh geändert, aber nicht aktualisiert”), und alle neuen Dateien, die Sie noch nie hatten zuvor hinzugefügt (dh nicht verfolgte Dateien).

Wenn Sie nur Dinge übertragen möchten, die Sie geändert haben, aber keine neu erstellten Dateien einbeziehen möchten, können Sie sie verwenden git commit -a -m "Comment for modified files already under source control."

  • Beachten Sie auch, dass „git stage“ anstelle von „git add“ verwendet werden kann, wenn es hilft, die Dinge im Kopf klar zu halten.

    – William Pursel

    2. Juli 2010 um 6:59 Uhr

  • Dies muss eine der besseren Antworten sein.

    – Donato

    12. Juni 2015 um 18:29 Uhr

  • das letzte ergibt den Fehler fatal: Paths with -a does not make sense.

    – Michael

    22. November 2016 um 23:06 Uhr

Sie fügen Dateien nicht in dem Sinne hinzu, dass Sie sie unter Git-Kontrolle stellen, sondern Sie fügen sie einer Änderungsliste hinzu. Einige andere SCMs wie z. B. tun dies zwangsläufig auch. Es ist praktisch, um verschiedene Sätze von Änderungen aufzubauen, die Sie noch nicht festschreiben können, die Sie aber in separaten Blöcken festschreiben möchten.

Sie können sich auf eine subversionistischere Art und Weise verpflichten, indem Sie es einfach tun git commit -a — was alles, was Git weiß, über das geändert wurde, festschreibt, genau wie was svn commit tut.

(PS. Da Sie aus der SVN-Welt kommen, werde ich einen weiteren Fallstrick erwähnen, der mich für eine Weile aus der Fassung gebracht hat — als Sie git diff, es zeigt Ihnen nur den Unterschied zwischen Ihrem aktuellen Status und dem, was in der Änderungsliste steht, NICHT den Unterschied zwischen Ihrem aktuellen Status und dem letzten Commit. Wenn du läufst git diff unmittelbar nach dem Hinzufügen aller geänderten Dateien (zB git add -u), sehen Sie ein leeres Diff, obwohl es Unterschiede gibt, die übernommen werden müssen!)

  • Ah, danke für die PS! Das ist definitiv etwas, mit dem ich zu kämpfen habe!

    – Hami

    1. Juli 2010 um 19:50 Uhr

1312290cookie-checkSollte ich jedes Mal Dateien zu Git hinzufügen müssen, wenn ich einen Commit ausführen möchte?

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

Privacy policy