Ich bin wirklich neu in Git und ich habe versucht zu verstehen, warum Git immer wieder anzeigt, was ich in einem Zweig in einem anderen Zweig geändert habe, wenn ich git checkout ausführe, um zwischen Zweigen zu wechseln. Zuerst habe ich versucht, git add nicht zu verwenden und es hat nicht funktioniert. Allerdings habe ich dann versucht, git add zu verwenden, aber das Problem nicht behoben. Ich verwende Git Commit noch nicht.
Das ist im Grunde das, was ich tue:
$ git clone <a_repository>
$ git branch
* master
$ git branch testing
$ git checkout testing
...edit a file, add a new one, delete...
$ git status
# On branch testing
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git branch
master
* testing
$ git checkout master
D file1.txt
Switched to branch 'master'
$ git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
Ich dachte, dass bei der Verwendung von Zweigen alles, was Sie in einem Zweig tun, für alle anderen Zweige unsichtbar ist. Ist das nicht der Grund für die Schaffung von Filialen?
Ich habe versucht, "git add" zu verwenden, aber die Änderungen sind in beiden Zweigen sichtbar. Muss ich "git commit" ausführen, bevor ich zwischen Zweigen wechsle, um dies zu vermeiden?
git add
diese vor dem Verstecken aufbewahren. Trotzdem bin ich mir nicht sicher, ob Sie sich hier tatsächlich verstecken möchten. Wenn Sie beabsichtigen, dass diese Änderungen Teil des Zweigs sind, von dem Sie wechseln, legen Sie sie fest. (Wenn Sie beabsichtigen, zu diesem Zweig zurückzukehren und mehr an den Änderungen zu arbeiten, bevor Sie sie festschreiben, ist diesstash
möglicherweise das richtige Werkzeug für den Job.)Kurze Antwort: Ja, Sie müssen sich verpflichten. Stellen Sie jedoch sicher, dass Sie es auf dem richtigen Ast tun!
Ein Zweig ist ein Zeiger auf ein Commit. Wenn Sie mit einem ausgecheckten Zweig festschreiben, zeigt der Zweig auf diesen neuen Commit. Wenn Sie einen Zweig auschecken, überprüfen Sie das Commit, auf das er verweist. (Sie können sich Commits als Schnappschüsse Ihres Arbeitsbaums vorstellen.)
Wenn Sie also Änderungen haben, die Sie nicht festgeschrieben haben, werden diese durch den Zweigwechsel nicht beeinflusst. Wenn das Wechseln der Zweige nicht mit Ihren Änderungen kompatibel ist,
git checkout
wird dies natürlich einfach abgelehnt.git add
ist ein Befehl zum Bereitstellen von Änderungen, den Sie dann festschreiben. Diese Änderungen werden nicht im Verlauf des Repositorys aufgezeichnet. Es platziert sie einfach in einem Bereitstellungsbereich (dem Index);git commit
Verwendet dann den Inhalt dieses Staging-Bereichs, um Commits zu erstellen.quelle