我正在使用Git默认的bash,我创建了一个主分支(非裸分支),并从中创建了一个分支(我们称其为新功能分支)。
我正在尝试分支操作,并测试git checkout命令。据我所知,checkout命令允许在不同分支之间切换。也就是说,checkout命令不允许在工作目录处于脏状态(即未暂存的编辑)时切换到另一个分支。
现在,我在我的主分支和功能分支中都有名为index.html的文件。这两个分支中的文件内容完全相同。现在我做了一些事情,让我感到困惑。
我正在我的功能分支上(当前这两个文件现在具有完全相同的内容),如果我编辑index.html的内容,比如标题标签,并且我没有将其暂存,如果我发出命令git checkout master,则Git允许我切换到主分支。更有趣的是,如果我在主分支内部发出git status命令,则我在功能分支上进行的未暂存更改会复制到主分支上。这不是破坏性的吗?
让我更加困惑的是,在两个分支上的2个文件在某个时间内,它们的内容不相同时,如果我在功能分支内部并编辑index.html文件的内容,比如标题标签,现在,如果我发出git checkout master命令,则它不允许我进行切换,因为它检测到我的工作树或目录处于脏状态。
总之,根据这些事件,我注意到如果2个文件具有相同的内容,如果您在一个分支上修改了该文件的内容,并检出到另一个分支,Git允许您进行切换,并将您所做的未暂存更改带到目标分支。
但是,如果两个不同分支上的2个文件具有不同的内容,如果您在一个分支上进行编辑并发出checkout命令以切换到另一个分支,则Git不允许您进行切换,因为出于某种原因它检测到工作树处于脏状态。
我的理解是正确的还是错误的?此外,我需要一点解释,说明我的理解是正确还是错误。
我正在尝试分支操作,并测试git checkout命令。据我所知,checkout命令允许在不同分支之间切换。也就是说,checkout命令不允许在工作目录处于脏状态(即未暂存的编辑)时切换到另一个分支。
现在,我在我的主分支和功能分支中都有名为index.html的文件。这两个分支中的文件内容完全相同。现在我做了一些事情,让我感到困惑。
我正在我的功能分支上(当前这两个文件现在具有完全相同的内容),如果我编辑index.html的内容,比如标题标签,并且我没有将其暂存,如果我发出命令git checkout master,则Git允许我切换到主分支。更有趣的是,如果我在主分支内部发出git status命令,则我在功能分支上进行的未暂存更改会复制到主分支上。这不是破坏性的吗?
让我更加困惑的是,在两个分支上的2个文件在某个时间内,它们的内容不相同时,如果我在功能分支内部并编辑index.html文件的内容,比如标题标签,现在,如果我发出git checkout master命令,则它不允许我进行切换,因为它检测到我的工作树或目录处于脏状态。
总之,根据这些事件,我注意到如果2个文件具有相同的内容,如果您在一个分支上修改了该文件的内容,并检出到另一个分支,Git允许您进行切换,并将您所做的未暂存更改带到目标分支。
但是,如果两个不同分支上的2个文件具有不同的内容,如果您在一个分支上进行编辑并发出checkout命令以切换到另一个分支,则Git不允许您进行切换,因为出于某种原因它检测到工作树处于脏状态。
我的理解是正确的还是错误的?此外,我需要一点解释,说明我的理解是正确还是错误。
git oops-forgot-to-switch-branch-earlier-do-it-now-if-safe
),那么这将会更少令人困惑。但它确实是非常安全的,只是一开始让你感到有点惊讶它能够让你这样做。 - torek