Git允许使用非分段更改进行分支更改

Dav*_*ave 59 git version-control

当我没有进行提交更改(修改过的文件)时,Git允许我更改分支.

这个地方有配置吗?

编辑:起初我认为这是一个配置,我需要设置为禁止在分支之间更改,如果有修改的非分页文件.但是,根据Emily的评论,似乎提示您文件在分支之间是否不同,否则不会提示.

Nat*_*ong 132

它是如何决定的

快速实验显示以下内容.

假设你在分支上dev并且你已经修改过了foo.txt.没有提交,你试着看看master.将发生两件事之一.

  1. 如果在没有提交的情况foo.txt下修改master了,dev则不允许在未提交的情况下进行切换,因为master该文件的"新"版本与未分级的更改冲突.

    master因此,"签出" 将需要Git更新foo.txt到具有的新版本,master从而破坏未分级的更改.为了防止你失去工作,它不会改变分支机构.

  2. 否则,修改已经完成,因为版本master知道,您将能够更改分支.Git不必更新文件,因为master没有关于该文件的新信息.

对于"哎呦"的变化

由于上述原因,如果您对一个分支上的文件进行了非分段更改,并且意识到您实际上想要在另一个分支上提交更改,则可能会或可能无法检出另一个分支.

但是,您可以执行以下操作:

  • git stash save "here's a summary of my changes"(摘要将显示在git stash list)
  • git checkout otherbranch
  • git stash pop(这是的组合git stash applygit stash drop)

  • 我不得不说,我最喜欢Git的一件事就是试验它是多么容易.我永远不会设置一个Subversion服务器来测试一些东西,但是开始一个Git实验就像`mkdir throwaway一样简单; cd一次性; git init`.稍后我做了一些Git操作,我已经学到了一些东西,可以删除那个目录. (29认同)
  • @Ian 如果 `foo.txt` 是当前分支上一个新的、未跟踪的(从未提交)文件,并且您 `git checkout other_branch`,则 git 不会对 `foo.txt` 执行任何操作;它在另一个分支上没有任何冲突的版本,并且它认为该文件与它无关。也许您使用的工具也做了“git clean”?https://git-scm.com/docs/git-clean (2认同)

Lil*_*ard 11

正如艾米丽指出的那样,这是一个特色.如果执行更改需要修改任何具有未分级更改的文件,Git将仅禁止分支更改.如果所有修改过的文件都不会受到分支机构结账的影响,那么git就不会抱怨了.这意味着无论您检查哪个分支,您都可以查看上一个分支,并且您的工作树将与您离开的方式相同.