切换Git分支时本地变更的处理机制及相关疑问
Git工作流程与相关技术问题解答
实操工作流程
x@PC MINGW64 /c/Temp/tests/git/branches/changes $ git init Initialized empty Git repository in C:/Temp/tests/git/branches/changes/.git/ x@PC MINGW64 /c/Temp/tests/git/branches/changes (master) $ echo "CHANGE #1" >> test.txt x@PC MINGW64 /c/Temp/tests/git/branches/changes (master) $ git add test.txt x@PC MINGW64 /c/Temp/tests/git/branches/changes (master) $ git commit -m "." [master (root-commit) 439c0f8] . 1 file changed, 1 insertion(+) create mode 100644 test.txt x@PC MINGW64 /c/Temp/tests/git/branches/changes (master) $ git branch branch-1 x@PC MINGW64 /c/Temp/tests/git/branches/changes (master) $ echo "CHANGE #2" >> test.txt x@PC MINGW64 /c/Temp/tests/git/branches/changes (master) $ cat test.txt CHANGE #1 CHANGE #2 x@PC MINGW64 /c/Temp/tests/git/branches/changes (master) $ git switch branch-1 Switched to branch 'branch-1' M test.txt x@PC MINGW64 /c/Temp/tests/git/branches/changes (branch-1) $ git add test.txt x@PC MINGW64 /c/Temp/tests/git/branches/changes (branch-1) $ git commit -m "." [branch-1 4c62bc9] . 1 file changed, 1 insertion(+) x@PC MINGW64 /c/Temp/tests/git/branches/changes (branch-1) $ git switch master Switched to branch 'master' x@PC MINGW64 /c/Temp/tests/git/branches/changes (master) $ cat test.txt CHANGE #1
流程梳理
- 在
master分支创建含“CHANGE #1”的test.txt文件 - 执行
git add和git commit提交该文件 - 创建
branch-1分支 - 在
test.txt中添加“CHANGE #2” - 切换到
branch-1分支 - 执行
git add和git commit提交文件 - 切换回
master分支
注:创建分支与第二次修改的顺序不影响结果
技术问题解答
问题1:切换到branch-1时,master分支上的本地变更未被清除,也未与master关联,仅被Git忽略,该行为的官方文档在哪里?
这种行为属于Git对未提交变更的分支切换兼容机制,相关说明在Git官方文档的git switch(旧版为git checkout)命令章节,以及Git核心概念中关于工作区、暂存区、版本库的部分。核心逻辑是:当切换分支时,若当前工作区的未提交变更与目标分支的对应文件版本无冲突,Git会保留这些变更在工作区,而非强制清除或绑定到原分支——工作区是独立于分支的临时修改区域,Git默认不会丢弃未提交的用户工作进度。
问题2:在branch-1提交变更后切换回master,第二次修改不再可见,该变更已被branch-1捕获,对应的精确技术术语是什么?
对应的精确表述是:该变更已被提交到branch-1分支,成为branch-1提交历史中的一个独立提交对象(commit object)。由于master分支的提交历史不包含该提交,切换回master时,工作区会恢复到master分支HEAD指向的版本,因此看不到该修改。从分支状态来看,branch-1相对于master存在一个超前提交(ahead commit)。
内容的提问来源于stack exchange,提问作者Pragmateek
相关产品推荐
相关产品推荐

