为什么git不断地显示我的变化,当我切换分支(修改,添加,删除的文件),无论我运行git add或不?

我真的是新来的混帐,我一直在试图了解为什么git不断显示我在另一个分支中的一个分支中更改的任何时候我运行git checkout在分支之间切换首先,我试着不使用git add,并没有工作。 不过,我尝试了然后使用git add,但没有解决问题。 我还没有使用git commit。

这基本上是我在做什么:

$ 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") 

我认为,在使用分支机构的时候,不pipe你在一个分支机构做什么,它对所有其他分支机构是不可见的。 这不是创build分支的原因吗?

我试过使用“git add”,但是更改在两个分支中都是可见的。 在分支之间切换之前是否需要运行“git commit”?

切换分支与您一起进行未提交的更改。 要么先提交,运行git checkout . 撤消它们,或者在切换之前运行git stash 。 (你可以使用git stash apply来取回你的修改)

简短的回答:是的,你需要承诺。 确保你在正确的分支上做到这一点!

分支是一个提交的指针。 当你提交一个分支提交,分支前进指向新的提交。 当你签出一个分支时,你检查它指向的提交。 (您可以将提交视为工作树的快照。)

所以,如果你有没有提交的变化,他们将不受转换分支的影响。 当然,如果切换分支与您的更改不兼容,那么git checkout将会拒绝执行。

git add是分阶段更改的命令,然后您将提交。 它不会将这些更改logging到存储库的历史logging中。 它只是把他们放入一个临时区域(索引); git commit然后使用该暂存区域的内容来创build提交。