2010-01-05 14 views
21

Sagen Sie, es gibt mehrere Dateien geändert und ich will nur ein jedes Mal Dateien verpflichtet. Wie geht das? Ein gegebenes Beispiel mit Status sieht wie folgt aus. Vielen Dank!!Wie man eine Datei mit Git festlegt?

Ex:

> git status 
# modified: file01.txt 
# modified: file02.txt 
# modified: file03.txt 
# modified: file04.txt 
# modified: file05.txt 

Antwort

17

Es gibt ein paar Möglichkeiten, aber die einfachste ist wahrscheinlich:

git commit file01.txt 
git commit file02.txt 
... 

Alle Pfade, die Sie Liste nach dem Commit-Befehl, unabhängig davon, begangen wird, ob sie inszeniert sind engagiert sein. Alternativ können Sie jede einzelne Stufe, und dann begehen:

git add file01.txt 
git commit 

git add file02.txt 
git commit 

... 
+6

Dies ist regulärer Git-Commit, aber für partielle Datei-Commit -p oder -e wird benötigt – radistao

+0

Verdammt, ich hätte diesen Kommentar gelesen, bevor Sie diesen Befehl verwenden. Das ist die falsche Antwort auf diese Frage! – default

+0

@donschoe Die Frage fragt, wie man einzelne Dateien (nicht Teile von Dateien) festlegt. Die Antwort ist richtig, auch wenn Sie den Fragetitel anders formuliert hätten (sollte wohl "wie man einzelne Dateien festlegt"). –

2
git add file01.txt 
git stash 
git commit -m'commit message' 
git stash pop 

wiederholen.

+3

Ich wollte das seither abstimmen Es gibt keinen Grund (aus der Perspektive von git), das Versteck zu machen, aber es ist keine schlechte Idee, wenn du zwischen dem Stash und dem Commit bauen und testen willst, damit du weißt, dass du nicht versehentlich kaputten Code begehst. –

+0

Was ist falsch daran, Code zu brechen? Solange es nicht veröffentlicht wird und niemand sonst es schafft, es zu bekommen. –

+0

@Pat, tendiere ich dazu, es aus Gewohnheit zu machen, Arbeitseinsätze zu haben und mit git svn zu arbeiten, wo ich Änderungen speichern muss, bevor ich Änderungen mit dcommit hochlade. Aber du hast Recht, es gibt keinen Grund in der OPs den Stash'n Pop zu machen. –

45

Verwenden Sie git add -p gefolgt von git commit. git add -p fragt Sie für jede Änderung, ob Sie es für das Committing bereitstellen möchten, was sehr praktisch ist. Sie können auch -p mit git reset und git checkout verwenden.

+7

Ich denke wirklich, dass Git-Zusatz -p mehr Belichtung benötigt! Es schafft viel schönere Arbeitsabläufe, weil Sie sich nicht um Dateinamen kümmern müssen, sondern nur um Ihre Änderungen. – dpavlin

14

git add -p von daf Antwort beschrieben ist schön, aber für einen direkteren Ansatz zur Kommissionierung und die Auswahl, bin ich wirklich zu mögen:

git add -e

Es den entsprechenden Patch erzeugt, dann lädt es nach oben in Ihrem bevorzugten Editor, so dass Sie es wie gewünscht bearbeiten können. Wenn Sie die Datei speichern und den Editor beenden, werden nur die Änderungen, die von Ihrer bearbeiteten Version des Patches vorgenommen wurden, zum Index hinzugefügt.

Wenn Sie den Editor versehentlich schließen, ohne Änderungen vorzunehmen, sollten Sie wahrscheinlich get reset HEAD verwenden und dann von vorne beginnen.

+3

Ich bevorzuge nun auch "-e" über "-p". – Richard

1

Zum Thema der partiellen Änderungen innerhalb einer Datei, ist es bemerkenswert, dass verschiedene Texteditoren Unterstützung dafür haben, dies auf eine bessere Weise als die Befehlszeilenoptionen zu tun.

Ich benutze Magit für Emacs, die einzelne Tastenanschläge für vorwärts oder rückwärts durch die hunks, Erhöhung oder Verringerung der Granularität und Staging oder Un-Staging der aktuellen Hunk verwendet. Sie können eine Region auch manuell markieren und nur diese Region inszenieren (oder aufheben).

Ich glaube, es gibt ähnliche Plugins für vim und andere Editoren/IDEs.

Verwandte Themen