Sie können einfach zum Testzweig auschecken und dann festschreiben. Sie verlieren Ihre nicht festgeschriebenen Änderungen nicht, wenn Sie in einen anderen Zweig wechseln.
Angenommen, Sie befinden sich in der Hauptniederlassung:
git checkout test
git add .
git add deletedFile1
git add deletedFile2
...
git commit -m "My Custom Message"
Ich bin mir über die gelöschten Dateien nicht sicher, aber ich denke, sie sind nicht enthalten, wenn Sie sie verwenden git add .
Manchmal schlägt das Auschecken fehl, weil Ihre Änderungen mit diesem Zweig in Konflikt stehen. Sie können die Kasse -m zum Zusammenführen versuchen.
Jouni K. Seppänen
2
Ich habe dies versucht, aber ich habe eine Fehlermeldung erhalten: Fehler: Ihre lokalen Änderungen an den folgenden Dateien werden beim Auschecken überschrieben. Bitte übernehmen Sie Ihre Änderungen oder speichern Sie sie, bevor Sie die Zweige wechseln können.
ishwr
Während dies funktioniert, sollte die Antwort IMO bevorzugt werden. Vielleicht nur eine persönliche Wahl, aber es ist logischerweise ein sauberer Workflow und führt STASH ein, was ein nützlicher Befehl ist.
Patrick
Die Option "-b" fehlt, da die Überschrift darauf hinweist, dass es sich um einen "neuen" Zweig handelt.
Guntram
195
Sie können auch einen neuen Zweig erstellen und zu diesem wechseln, indem Sie Folgendes tun:
git checkout -b new_branch
git add .
Ich benutze dies die ganze Zeit, weil ich immer vergesse, einen neuen Zweig zu starten, bevor ich mit der Bearbeitung von Code beginne.
Das gleiche Problem wie bei @jouni für die andere Antwort - Sie können Schwierigkeiten haben, den Zweig wieder mit dem Master zusammenzuführen, wenn zusätzliche Änderungen mit den ursprünglichen Änderungen in Konflikt stehen. IMO dieser Thread beantwortet die Frage besser: stackoverflow.com/questions/556923/…
jpw
Kurz, süß und beruhigend ... "Ich benutze das die ganze Zeit ..."
17οδεMεδιϲ
1
Vergessen Sie nicht, in der new_branch ein Commit durchzuführen. Wenn Sie zum Hauptzweig zurückkehren und geänderte Dateien zurücksetzen, verlieren Sie sie auch in der new_branch.
Petrsyn
36
Warum nicht einfach Git Stash verwenden? Ich denke, es ist intuitiver wie das Kopieren und Einfügen.
$ git branch
develop
* master
feature1
TEST
$
Sie haben einige Dateien in Ihrem aktuellen Zweig, die Sie verschieben möchten.
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: awesome.py
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: linez.py
#
$
$ git stash
Saved working directory and index state \
"WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$
Wechseln Sie zum anderen Zweig.
$ git checkout TEST
Und bewerben
$ git stash apply
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: awesome.py
# modified: linez.py
#
Ich mag es auch, git stashweil ich benutze git flow, was sich beschwert, wenn Sie einen Feature-Zweig beenden möchten, während sich noch Änderungen in Ihrem Arbeitsverzeichnis befinden.
Genau wie bei @Mike Bethany passiert mir das die ganze Zeit, weil ich an einem neuen Problem arbeite und vergesse, dass ich mich noch in einem anderen Zweig befinde. So können Sie Ihre Arbeit verstauengit flow feature finish... und git stash applyin einen neuen git flow feature start ...Zweig wechseln .
git stashist meine bevorzugte Art, mit nicht festgeschriebenen Änderungen umzugehen. Es ist sicherlich eine intuitive Methode, wenn Sie es als Ausschneiden und Einfügen betrachten.
Matthew Mitchell
Dies scheint mir ein guter Ansatz zu sein. Es hat problemlos funktioniert.
Yunus Nedim Mehel
Ich wusste nicht, dass du das kannst und es hat gut funktioniert. Fühlt sich etwas intuitiver an als die anderen Methoden.
Glaukon
Ich denke, es ist professioneller zu verstauen, anstatt Git Checkout zu verwenden und dann hinzuzufügen. Ich denke, Ihre Antwort sollte 100+ Stimmen sein.
Antworten:
Sie können einfach zum Testzweig auschecken und dann festschreiben. Sie verlieren Ihre nicht festgeschriebenen Änderungen nicht, wenn Sie in einen anderen Zweig wechseln.
Angenommen, Sie befinden sich in der Hauptniederlassung:
Ich bin mir über die gelöschten Dateien nicht sicher, aber ich denke, sie sind nicht enthalten, wenn Sie sie verwenden
git add .
quelle
Sie können auch einen neuen Zweig erstellen und zu diesem wechseln, indem Sie Folgendes tun:
Ich benutze dies die ganze Zeit, weil ich immer vergesse, einen neuen Zweig zu starten, bevor ich mit der Bearbeitung von Code beginne.
quelle
Warum nicht einfach Git Stash verwenden? Ich denke, es ist intuitiver wie das Kopieren und Einfügen.
Sie haben einige Dateien in Ihrem aktuellen Zweig, die Sie verschieben möchten.
Wechseln Sie zum anderen Zweig.
Und bewerben
Ich mag es auch,
git stash
weil ich benutzegit flow
, was sich beschwert, wenn Sie einen Feature-Zweig beenden möchten, während sich noch Änderungen in Ihrem Arbeitsverzeichnis befinden.Genau wie bei @Mike Bethany passiert mir das die ganze Zeit, weil ich an einem neuen Problem arbeite und vergesse, dass ich mich noch in einem anderen Zweig befinde. So können Sie Ihre Arbeit verstauen
git flow feature finish...
undgit stash apply
in einen neuengit flow feature start ...
Zweig wechseln .quelle
git stash
ist meine bevorzugte Art, mit nicht festgeschriebenen Änderungen umzugehen. Es ist sicherlich eine intuitive Methode, wenn Sie es als Ausschneiden und Einfügen betrachten.git stash --include-untracked
quelle