Ich habe zwei Projekte. Eines ist das “offizielle” Projekt und das zweite ist eine leichte Modifikation (einige Dateien hinzugefügt). Ich habe einen neuen Zweig erstellt und ihnen neue Dateien hinzugefügt. Aber während der Entwicklung werden einige Dateien geändert, die beiden Zweigen gemeinsam sind.
Wie übertrage ich nur diese Dateien?
Sind diese beiden Projekte mit demselben Git-Repository verbunden?
– Oleksandr
30. August 2011 um 6:20 Uhr
Ja, es ist dasselbe Repository, aber ich möchte meinen Zweig nicht auf den Server stellen
– Nips
30. August 2011 um 6:25 Uhr
Warum also führst du deinen neuen Zweig nicht mit dem Master (oder einem anderen offiziellen Zweig) zusammen?
– Oleksandr
30. August 2011 um 6:28 Uhr
Antworten auf diese Fragen sollen Ihnen helfen: stackoverflow.com/questions/7161860/… stackoverflow.com/questions/7175869/…
– eckes
30. August 2011 um 12:32 Uhr
Alexander Ach
Ich nehme an, Sie möchten die Änderungen an einem Zweig festschreiben und diese Änderungen dann im anderen Zweig sichtbar machen. In Git sollten Sie keine Änderungen über HEAD haben, wenn Sie Zweige ändern.
Sie übertragen nur die geänderten Dateien, indem Sie:
git commit [some files]
Oder wenn Sie sicher sind, dass Sie einen sauberen Staging-Bereich haben, können Sie das tun
git add [some files] # add [some files] to staging area
git add [some more files] # add [some more files] to staging area
git commit # commit [some files] and [some more files]
Wenn Sie diesen Commit in beiden Zweigen verfügbar machen möchten, tun Sie dies
git stash # remove all changes from HEAD and save them somewhere else
git checkout <other-project> # change branches
git cherry-pick <commit-id> # pick a commit from ANY branch and apply it to the current
git checkout <first-project> # change to the other branch
git stash pop # restore all changes again
Sich buchstäblich zu verpflichten nur diese Dateien, auch wenn andere Änderungen vorgenommen wurden, das zweite Beispiel (git commit [some files]was die impliziert --only Schalter) verwendet werden. Das erste Beispiel (git add [some files] gefolgt von git commit) wird auch alle anderen Änderungen vornehmen, die inszeniert wurden.
– Lexika
9. März 2013 um 6:07 Uhr
Ich wäre hilfreich, um Beispiele für Git Commit bereitzustellen [some files]. Wie sollten Sie ersetzen [some files]Komma, Leerzeichen?
– Claudius Creanga
26. März 2015 um 10:06 Uhr
@claudiu Shell-Zeug ist normalerweise durch Leerzeichen getrennt. Und wenn Du tief genug eintauchst, kannst Du das zu allem ändern
– Alexander Ach
26. März 2015 um 10:09 Uhr
Wenn Sie einige Beispiele hinzufügen können, ist diese Antwort großartig.
– Yamur
1. Juni 2020 um 7:41 Uhr
Abraham
Rufen Sie eine Liste der Dateien ab, die Sie übergeben möchten
$ git status
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file1
modified: file2
modified: file3
modified: file4
Fügen Sie die Dateien zum Staging hinzu
$ git add file1 file2
Überprüfen Sie, um zu sehen, was Sie begehen
$ git status
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: file1
modified: file2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file3
modified: file4
Übergeben Sie die Dateien mit einer Commit-Nachricht
$ git commit -m "Fixed files 1 and 2"
Wenn Sie versehentlich die falschen Dateien übergeben
$ git reset --soft HEAD~1
Wenn Sie die Dateien aus der Staging-Umgebung entfernen und von vorne beginnen möchten
$ git reset
Unstaged changes after reset:
M file1
M file2
M file3
M file4
Das ist falsch. Ich tat git add file1 file2 und dann git commit -m "Fixed files 1 and 2" und es begangen ALLE die Dateien.
– Binäres Web
23. April 2021 um 18:57 Uhr
@BinarWeb Weil Sie all diese Dateien bereitgestellt (hinzugefügt) hatten. Aber es ist erwähnenswert, in der Antwort absolut klar zu sein. Was in deinem Fall funktioniert hätte: git commit file1 file2 -m "Fixed files 1 and 2"
– UncaughtTypeError
29. August 2021 um 19:54 Uhr
@UncaughtTypeError Verstehe nicht, warum diese Antwort so viele positive Stimmen erhalten hat, während die Frage eindeutig “beiden Zweigen gemeinsam” lautet, was bedeutet, dass sie bereits inszeniert ist. Wie Binar Web erwähnte, ist diese Antwort angesichts der gestellten Frage falsch.
– Farid
3. Februar um 12:26 Uhr
Sie können einige aktualisierte Dateien wie folgt übertragen:
git commit file1 file2 file5 -m "commit message"
Tom Stickel
Einiges davon scheint “unvollständig” zu sein
Personengruppen werden NICHT wissen, ob sie Anführungszeichen usw. verwenden sollten.
Addieren 1 spezifische Datei, die auch die Standortpfade zeigt
Begehen (Denken Sie daran, Commit ist nur lokal, es wirkt sich nicht auf andere Systeme aus)
git commit -m "your message"
An entferntes Repo senden
git push (this is after the commit and this attempts to Merge INTO the remote location you have instructed it to merge into)
Andere Antworten zeigen die verstauen usw., was Sie manchmal tun möchten
KamalDeep
Angenommen, Sie haben Änderungen an mehreren Dateien vorgenommen, z. B.:
Datei1
Datei2
Datei3
Datei4
Datei5
Aber Sie wollen nur Änderungen von File1 und File3 festschreiben.
Dazu gibt es zwei Möglichkeiten:
1.Stage nur diese beiden Dateien mit:
git add file1 file3
dann verpflichte dich
git commit -m "your message"
dann drücken,
git push
2. Direkte Zusage
git commit file1 file3 -m "your message"
dann drücken,
git push
Tatsächlich erste Methode ist nützlich für den Fall, dass wir regelmäßig Dateien ändern und bereitstellen –> Große Projekte, im Allgemeinen Live-Projekte. Aber wenn wir Dateien modifizieren und sie nicht stagnieren, können wir direktes Commit durchführen –> Kleine Projekte
Wenn Sie den Dateinamen nicht angeben, wie es Ihr zweites Beispiel vorschlägt, geht git davon aus, dass das Befehlsflag für diese Argumente lautet --only. Dann wäre es der gleiche Befehl wie git commit --only file1 --only file3 -m "my message" oder mit einer Verknüpfung als git commit -o file1 -o file3 -m "my message" Referenz: git-scm.com/docs/git-commit
– Benutzer
30. Oktober 2018 um 19:42 Uhr
Kaiser
Wenn Sie bereits Dateien bereitgestellt haben, heben Sie die Bereitstellung einfach auf:
git reset HEAD [file-name-A.ext] [file-name-B.ext]
Fügen Sie sie dann nach und nach wieder hinzu.
Wenn Sie den Dateinamen nicht angeben, wie es Ihr zweites Beispiel vorschlägt, geht git davon aus, dass das Befehlsflag für diese Argumente lautet --only. Dann wäre es der gleiche Befehl wie git commit --only file1 --only file3 -m "my message" oder mit einer Verknüpfung als git commit -o file1 -o file3 -m "my message" Referenz: git-scm.com/docs/git-commit
– Benutzer
30. Oktober 2018 um 19:42 Uhr
Ich denke, Sie können auch die Befehlszeile verwenden:
git add -p
Auf diese Weise können Sie alle Ihre nicht festgeschriebenen Dateien einzeln überprüfen und auswählen, ob Sie sie festschreiben möchten oder nicht.
Dann haben Sie einige Optionen, die für jede Änderung angezeigt werden: Ich verwende das “y” für “Ja, ich möchte diese Datei hinzufügen” und das “n” für “Nein, ich werde diese Datei später übertragen”.
Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
Was die anderen Optionen betrifft, die ( q,a,d,K,g,/,e,? ) sind, bin ich mir nicht sicher, was sie tun, aber ich denke, das “?” kann Ihnen helfen, wenn Sie tiefer in die Details gehen müssen.
Das Tolle daran ist, dass Sie dann Ihre Arbeit vorantreiben und danach einen neuen Zweig erstellen können, und die gesamte nicht festgeschriebene Arbeit wird Ihnen auf diesem neuen Zweig folgen. Sehr nützlich, wenn Sie viele verschiedene Dinge codiert haben und Ihre Arbeit auf GitHub tatsächlich neu organisieren möchten, bevor Sie es pushen.
Hoffe das hilft, ich habe es vorher nicht gesehen (wenn es erwähnt wurde, mein Fehler)
9239300cookie-checkWie übertrage ich nur einige Dateien?yes
Sind diese beiden Projekte mit demselben Git-Repository verbunden?
– Oleksandr
30. August 2011 um 6:20 Uhr
Ja, es ist dasselbe Repository, aber ich möchte meinen Zweig nicht auf den Server stellen
– Nips
30. August 2011 um 6:25 Uhr
Warum also führst du deinen neuen Zweig nicht mit dem Master (oder einem anderen offiziellen Zweig) zusammen?
– Oleksandr
30. August 2011 um 6:28 Uhr
Antworten auf diese Fragen sollen Ihnen helfen: stackoverflow.com/questions/7161860/… stackoverflow.com/questions/7175869/…
– eckes
30. August 2011 um 12:32 Uhr