So fügen Sie Git mehrere Dateien gleichzeitig hinzu

120

Dies wird mein erster Git-Einsatz sein. Ich habe dem Ordner / Projekt (git local repository) (viel) neue Dateien hinzugefügt.

Ich habe Online-Tutorials und Foren durchgesehen und gesehen, dass ich das kann

git commit -a

Also gehe ich zum Basisordner des Repositorys und mache eine

sudo git commit -a

Aber dann erscheinen einige Bildschirme und ich werde gebeten, einen Kommentar hinzuzufügen, den ich mache. Ich weiß nicht, wie ich vorgehen oder aussteigen soll. Ich möchte nichts vermasseln, also habe ich Strg + Z gedrückt und nichts getan.

Könnt ihr bitte die Befehle skizzieren, die ich verwenden muss?

git commit -a 

und

git push?
Kishore.
quelle
1
git commit -aöffnet einen Editor, in den Sie eine Commit-Nachricht eingeben können. Geben Sie eine Nachricht ein, die Sie als Protokoll anzeigen möchten, und beenden Sie den Editor. Damit ist das Festschreiben abgeschlossen. Folgen Sie dem, indem Sie Ihre Änderungen in das Remote-Repository übertragen, indem Sie git push <remote name> <branch name>beispielsweisegit push remote master
Bhaskar,
3
Beachten Sie auch, dass Siesudo
dax
Vielen Dank für die Antwort. Wenn ich sudo nicht benutze, erhalte ich die Berechtigung verweigert Fehler.
Kishore.
2
Nachdem Sie zuvor sudo verwendet haben, befinden sich wahrscheinlich Dateien in Ihrem Arbeitsverzeichnis, die sich fälschlicherweise im Besitz von root befinden. Zu diesem Zeitpunkt führt das Ausführen anderer Vorgänge ohne sudo zu einem Fehler, dem die Berechtigung verweigert wurde, da Sie die Dateien von root nicht ändern können. Ihr Repository ist möglicherweise ein bisschen chaotisch und es ist möglicherweise am besten, von vorne zu beginnen (und kein Sudo zu verwenden).
Greg Hewgill
Wenn Sie alle Dateien hinzufügen möchten, können Sie `git add -a` verwenden. Wenn Sie jedoch mehrere ausgewählte Dateien hinzufügen möchten. Sie können `git add -i 'verwenden. Weitere Informationen finden Sie unter git-scm.com/book/en/v2/Git-Tools-Interactive-Staging . das wird dir helfen .
Kapila Ranasinghe

Antworten:

120

So fügen Sie alle vorgenommenen Änderungen hinzu:

git add .

Um sie zu verpflichten:

git commit -m "MY MESSAGE HERE" # -m ist das Nachrichtenflag

Sie können diese Schritte folgendermaßen zusammenstellen:

git commit -a -m "MY MESSAGE HERE"

So übertragen Sie Ihre festgeschriebenen Änderungen von Ihrem lokalen Repository in Ihr Remote-Repository:

git push origin master

Möglicherweise müssen Sie danach Ihren Benutzernamen / Ihr Passwort für github eingeben. Hier ist eine gute Einführung in die Verwendung von Git. Ein bisschen alt, aber es deckt ab, was wirklich gut läuft.

dax
quelle
Werden -avor dem Festschreiben neue (nicht bereitgestellte) Dateien hinzugefügt?
SabreWolfy
git commit -aist eine Abkürzung für git commit --all, also ja, es wird.
dax
1
$ man git-commitEnthält dies für -a: "Weisen Sie den Befehl an, Dateien, die geändert und gelöscht wurden, automatisch bereitzustellen, aber neue Dateien, von denen Sie Git nichts erzählt haben, sind nicht betroffen.", weshalb ich gefragt habe.
SabreWolfy
Der Vollständigkeit halber ist es am einfachsten, mehrere Dateien eines Typs hinzuzufügen, indem Sie das Sternchen verwenden. Verwenden Sie beispielsweise für HTML "git add * .html"
Inyoka
381

Verwenden Sie den git addBefehl, gefolgt von einer Liste von durch Leerzeichen getrennten Dateinamen.

git add file-path-1 file-path-2 file-path-3
Reggie Pinkham
quelle
1
Wenn Sie nur den Dateinamen angeben, wird der Fehler "fatal: pathspec 'filename.java' stimmte nicht mit Dateien überein" angezeigt. Geben Sie stattdessen den gesamten Dateipfad und Dateinamen wie folgt an: 'git add long / path / {Datei1, Datei2, ..., Datei}'
Shravan Ramamurthy
4
Dies funktioniert nicht, wenn einer der Dateinamen ein Leerzeichen mit Git 1.9.5 enthält
Maxime Helen
Wir müssen "<" und ">" daraus entfernen. Dies wird jemanden verwirren.
Saeed Entezari
30

Wie einige bereits erwähnt haben, ist die Verwendung von git Interactive Staging ein möglicher Weg . Dies ist ideal, wenn Sie Dateien mit unterschiedlichen Erweiterungen haben

$ git add -i
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb

*** Commands ***
  1: status     2: update      3: revert     4: add untracked
  5: patch      6: diff        7: quit       8: help
What now>

Wenn Sie drücken , 2 dann entererhalten Sie eine Liste der verfügbaren Dateien erhalten hinzugefügt werden:

What now> 2
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

Jetzt nur noch die Anzahl der Dateien einfügen müssen Sie hinzufügen möchten, also , wenn wir hinzufügen wollten TODOund index.htmlwir würden geben1,2

Update>> 1,2
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>

Siehst du das * vor der Nummer? Das bedeutet, dass die Datei hinzugefügt wurde.

Stellen Sie sich nun vor, Sie haben 7 Dateien und möchten alle außer der 7. hinzufügen? Sicher könnten wir tippen, 1,2,3,4,5,6aber stellen Sie sich vor, anstelle von 7 hätten wir 16, das wäre ziemlich umständlich. Das Gute ist, dass wir nicht alle tippen müssen, weil wir Bereiche durch Tippen verwenden können1-6

Update>> 1-6
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
* 4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>

Wir können sogar mehrere Bereiche verwenden. Wenn wir also 1 bis 3 und 5 bis 7 möchten, geben wir Folgendes ein 1-3, 5-7:

Update>> 1-3, 5-7
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

Wir können dies auch verwenden, um Dateien zu entfernen, wenn wir tippen -number. Wenn wir also Datei Nummer 1 entfernen möchten, geben wir Folgendes ein -1:

Update>> -1
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
* 5:    unchanged        +5/-1 file5.html
* 6:    unchanged        +5/-1 file6.html
* 7:    unchanged        +5/-1 file7.html
Update>>

Und wie Sie sich vorstellen können, können wir auch eine Reihe von Dateien -rangeentfernen. Wenn wir also alle Dateien in diesem Bereich eingeben, werden sie nicht bereitgestellt. Wenn wir alle Dateien von 5 bis 7 entfernen möchten, geben wir Folgendes ein -5-7:

Update>> -5-7
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
* 3:    unchanged        +5/-1 lib/simplegit.rb
  4:    unchanged        +5/-1 file4.html
  5:    unchanged        +5/-1 file5.html
  6:    unchanged        +5/-1 file6.html
  7:    unchanged        +5/-1 file7.html
Update>>
Fabio Antunes
quelle
2
persönlich mag ich diesen Weg. Es ist einfach zu verwenden, wenn Sie mehr Dateien zum Festschreiben und für andere Vorgänge haben.
Kapila Ranasinghe
Wie beenden Sie die interaktive Inszenierung, wenn Sie fertig sind?
Crparedes
1
@Crparedes Wenn Sie die Dateien hinzugefügt haben und erneut die Eingabetaste drücken, wird das Menü wieder aufgerufen. Anschließend müssen Sie die Option 7zum Beenden der interaktiven Bereitstellung auswählen .
Fabio Antunes
28

Sie können auch mehrere Dateien wie diese auswählen

git add folder/subfolder/*

Dadurch werden alle Dateien im angegebenen Unterordner hinzugefügt. Sehr nützlich, wenn Sie eine Reihe von Dateien bearbeiten, aber nur einige davon festschreiben möchten ...

Nadalsol
quelle
14

Wenn Sie einem bestimmten Ordner mehrere Dateien hinzufügen möchten, können Sie diese mithilfe von teilen {,}. Dies ist fantastisch, um lange Wege nicht zu wiederholen, z

git add long/path/{file1,file2,...,filen}

Achten Sie darauf, keine Leerzeichen zwischen die zu setzen ,.

EliuX
quelle
Was ist lang / Weg / hier? @ EliX
Lalithkumar
long / path könnte eine Pfadzeichenfolge mit einer sehr langen Länge sein, daher ist es bequemer, einen solchen Teil nicht zu wiederholen, ohne cdsich darauf
einlassen
4

Wenn Sie Dateien ändern oder neue im Repository hinzufügen, müssen Sie diese zuerst bereitstellen.

git add <file>

oder wenn du alles inszenieren willst

git add .

Auf diese Weise teilen Sie mit, welche Dateien Sie bei Ihrem nächsten Commit benötigen. Dann machst du:

git commit -m 'your message here'

Sie nutzen

git push origin master

Dabei ist origin der Remote-Repository-Zweig und master der lokale Repository-Zweig.

Somi
quelle
Danke dir!. Beim letzten Befehl git push origin master. Ich arbeite tatsächlich an einem anderen Filialnamen (der aus dem Hauptzweig erstellt wurde). Also muss ich meinen Filialnamen oder Ursprungsmaster eingeben.
Nochmals vielen
Kein Problem. :) Ja, Sie sollten Ihre Filialnamen verwenden, Ursprungsmaster sind nur Beispiele.
Somi
1

Es hört sich so an, als würde git (wahrscheinlich vi) Ihren Editor starten , damit Sie eine Commit-Nachricht eingeben können. Wenn Sie nicht vertraut sind vi, ist es einfach, die Grundlagen zu lernen . Alternativen sind:

  • Verwenden Sie git commit -a -m "my first commit message"diese Option, um die Festschreibungsnachricht in der Befehlszeile anzugeben (mit dieser Option wird kein Editor gestartet).

  • Stellen Sie die EDITORUmgebungsvariable auf einen Editor ein, mit dem Sie vertraut sind

Greg Hewgill
quelle
Vielen Dank an alle, die geantwortet haben. Ich habe meine Dateien erfolgreich festgeschrieben und gepusht.
Kishore.
1

Wenn Sie alle Ihre Dateien auf Github bereitstellen und festschreiben möchten, gehen Sie wie folgt vor:

git add -A                                                                                
git commit -m "commit message"
git push origin master
Johnson Ogwuru
quelle
0

👉 Schritt1 .

git init

👉 Schritt 2.

a) für alle Dateien

git add -a

b) nur bestimmter Ordner

git add <folder1> <folder2> <etc.>

👉 Schritt 3.

git commit -m "Your message about the commit"

👉 Schritt 4.

Geben Sie hier die Bildbeschreibung ein

git remote add origin https://github.com/yourUsername/yourRepository.git

👉 Schritt 5 .

git push -u origin master
git push origin master

Wenn Sie mit diesem Fehler konfrontiert sind, dann

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/harishkumawat2610/Qt5-with-C-plus-plus.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

👉 Verwenden Sie diesen Befehl

git push --force origin master
Harish Kumawat
quelle