Git:分支机构应该隔离这些变化,还是不应该?

sti*_*vlo 5 git

我以为我已经很好地掌握了Git,但刚才我很惊讶.我认为分支会将变化与其他分支隔离开来,所以我在一个新的分支中开始了一个大的实验性重构.这种重构,意味着移动了许多文件.当我切换到掌握时,我仍然可以看到变化!

我去了我的沙箱存储库来复制问题:

$ git branch crazy-refactoring
$ git checkout crazy-refactoring
$ rm README
$ git checkout master
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    README
#
no changes added to commit (use "git add" and/or "git commit -a")
$ ls README
ls: cannot access README: No such file or directory
Run Code Online (Sandbox Code Playgroud)

为什么?我创建分支的全部意义在于,我可以尝试一些东西,如果不成功则扔掉它.Toughts?

Fel*_*ing 6

你没有提交删除.只有承诺的变更才是"孤立的".

关于你的评论:

也许我错过了一些东西,但在我看来这是一种奇怪而不良的行为.

想一想:

您删除READMEcrazy-refactoring,但并没有提交更改.Git知道你改变了文件而你没有提交它.为了保留您的更改,如果您签出另一个分支,它不会覆盖它们.
否则,Git无法知道当您切换回分支时您所做的更改已经发生了什么变化.它们将丢失,这比看到其他分支中的更改要糟糕得多.

您当前的工作目录始终是当前分支+未提交的更改(除非您重置它们).

当然,Git可以在检查其他分支时警告您,您有未提交的更改,但有时需要保留更改切换到另一个分支.

  • 也感谢您的额外解释,而且正如 butter71 所说,它也可能很有用。 (2认同)