Ich verstehe eindeutig Git überhaupt nicht. Das ist was ich bekomme:Git Staging und Commit zwischen mehreren Zweigen
git branch (outputs that I'm on master)
git checkout -b foo
echo "next line" >> file (file is an existing file)
git add file (stages)
git checkout master
git status (shows that file has "next line" and is staged!!)
git commit (commits the changes that were staged on branch foo!!)
git checkout foo
Hier ist der Kicker. foo zeigt nun keine Änderungen mehr an der Datei im Arbeitsverzeichnis OR staged.
So sieht aus wie - alle Änderungen, die Sie vornehmen, einschließlich Ändern von Dateien und Staging, passieren alle Zweige. Wenn Sie COMMIT für eine bestimmte Verzweigung ausführen, werden diese Änderungen in allen anderen Verzweigungen mit Ausnahme der für Sie festgeschriebenen Verzweigung verworfen.
Ist das tatsächlich was ist los? Kann mir jemand das sinnvoll machen? Es hört sich nach völlig verrücktem Verhalten an und klar, ich bekomme nicht die Designidee, die das zu einer vernünftigen Sache macht.
Edit für explizites Beispiel:
$ mkdir element
$ cd element
$ git init
Initialized empty Git repository in /home/dan/element/.git/
$ echo "one" >> one
$ git add one
$ git commit -m msg
[master (root-commit) 36dc8b0] msg
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 one
$ git checkout -b fire
Switched to a new branch 'fire'
$ echo "next line" >> one
$ git checkout master
M one
Switched to branch 'master'
$ cat one
one
next line
$
Welche offensichtlich diese Pro Buch aus dem git widerspricht:
This is an important point to remember: Git resets your working directory to look like the snapshot of the commit that the branch you check out points to. It adds, removes, and modifies files automatically to make sure your working copy is what the branch looked like on your last commit to it.
Kann meine Antwort helfen, Dinge zu klären? Ich denke, es ist älter als deine Bearbeitung, aber ich bin mir nicht ganz sicher. – larsks