Question:
I’m really new to git and I’ve been trying to understand why git keeps showing whatever I changed in one branch in another branch when I run git checkout to switch between branches First I tried not using git add and didn’t work. However, I tried then using git add, but didn’t fix the problem. I’m not using git commit yet.
This is basically what I’m doing:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
$ git clone $ 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 # (use "git checkout -- # # deleted: file1.txt # # Untracked files: # (use "git add # # 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 # (use "git checkout -- # # deleted: file1.txt # # Untracked files: # (use "git add # # file2.txt no changes added to commit (use "git add" and/or "git commit -a") |
I thought that, while using branches, whatever you do in one branch, it’s invisible to all the other branches. Is not that the reason of creating branches?
I tried using “git add” but the changes are visible in both branches.
Do I need to run “git commit” before switching between branches to avoid this?
Answer:
Switching branches carries uncommitted changes with you. Either commit first, run git checkout .
to undo them, or run git stash
before switching. (You can get your changes back with git stash apply
)