我以为我已经很好地掌握了 Git,但现在我感到惊讶。我认为分支会将更改与其他分支隔离,因此我在新分支中开始了大规模的实验性重构。这种重构意味着移动许多文件。当我切换到 master 时,我仍然可以看到变化!
我转到我的沙箱存储库来复制问题:
$ 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
为什么?我创建一个分支的全部目的是,我可以尝试一些东西,如果不成功就扔掉它。紧身衣?
您没有提交删除。只有提交的更改才是“隔离的”。
关于您的评论:
也许我错过了一些东西,但在我看来,这是一种奇怪且不受欢迎的行为。
想一想:
你删除了README
in crazy-refactoring
但没有提交更改。 Git 知道您更改了文件并且没有提交它。为了preserve您的更改,如果您签出另一个分支,它不会覆盖它们。
否则,当您切换回进行更改的分支时,Git 将无法知道更改是什么。它们将会丢失,这比看到其他分支中的更改更糟糕。
您当前的工作目录始终是当前分支+未提交的更改(除非您重置它们)。
当然,当检查其他分支时,Git 可能会警告您有未提交的更改,但有时需要保留更改and切换到另一个分支。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)