实验一描述:
从master创建dev分支,然后在dev分支上进行修改,比如说添加了一个hello_world.md文件。
然后切换到master分支,此时查看git add status,可以看到dev分支上的修改在master上反应出来了,而些从master上创建bug分支,然后bug分支添加新的文件,比如说添加了一个bug.md
然后add commit push三步曲,bug分支上不仅添加了bug分支上修改的内容也添加了dev分支上修改的内容,但我本意只想添加bug分支上的内容。如果这个时候进行merge到master上,一定会把dev分支上的内容添加进去,不是计划之内的内容,会造成巨大负面影响。
实验二描述:
从master创建dev分支,然后在dev分支上进行修改,比如说添加了dev0021542.md,然后三步曲提交到远程。
切换到master分支,使用git add status命令,可以看到并无更新。
那么如何才能使未提交的分支不影响到master分支呢,继而不影响到bug分支,最终不影响到master的稳定性。
方案一:创建新的分支之前,将所有分支全部提交。可以使用命令查看,如果没有提交,任何分支都能看到修改的内容。
方案二:冻结已经修改的内容,先把工作现场git stash
一下,然后去修复bug,修复后,再git stash pop
,回到工作现场;
实验三:
从master分支创建dev分支 ,然后添加内容,使用git stash命令,此时可以看到git add status没有新的内容,无论是master还是dev下。所以此时新建内容并不会将dev修改合并进来。当所有的bug修改完成后,然后切换到dev分支,使用git stash pop命令,即可恢复原样。
实验四:
从master创建dev分支,然后在dev分支上进行修改,比如说添加了一个hello_world.md文件。
然后切换到master分支,此时查看git add status,可以看到dev分支上的修改在master上反应出来了,而些从master上创建bug分支,然后bug分支添加新的文件,比如说添加了一个bug.md,而此时发现已经错了,所以切换到master分支删除bug分支,然后再切换到dev分支,查看bug分支修改的内容仍然在,那么这个 时候在dev提交会怎么样尼,于是提交了,结果是两个分支的修改均提交到远程。然后切换到master分支,可以看到对master分支无影响。
结论:
一、其他分支修改没有提交,是会同时影响到所有分支,因为所有分支均能看到新增内容。直接基于master创建,就会将原来不想提交提交了,造成了意想不到的错误。
二、从master创建分支之前,必须使用git add . status命令查看是否为干净的目录,就可以避免风险。
三、推断:不同的分支均有修改,但没有commit,如果一个分支进行提交就会将所有分支的修改都会同步到一个分支中,但其他 分支的修改内容还在不在,不确定,待实验。