git
  • 安装教程
  • 本地仓库
    • 工作区与版本库
    • 版本管理
      • 创建版本库
      • 提交修改
      • 撤消修改
      • 删除文件
    • 分支管理
      • 创建分支
      • 合并分支
      • 删除分支
    • 标签管理
      • 创建标签
      • 删除标签
  • 远程仓库
    • 初始化远程库
    • 克隆远程库
    • 多人协作
    • 远程分支
    • 远程标签
    • 关于origin
    • 关于upstream
  • 关于config
    • 关于name与email
    • window上的凭证
  • git常用命令
  • github的使用
  • 容器跑gogs
  • 项目版本管理
    • GitFlow
Powered by GitBook
On this page
  • 问题
  • 实验
  • 结论
  • 分析

Was this helpful?

  1. 本地仓库
  2. 分支管理

创建分支

问题

假设本地的某个git repository下有a.md文件,刚开始的时候只有master分支,则该文件只有一行内容;此时,我们在该repository下新建一个dev分支;然后在master分支在第一行的基础下我们添加一行并提交,在dev分支下也添加一行不同的内容并提交;那么两次提交后a.md的文件内容到底是什么样的?

实验

1、准备目录与文件

创建一个目录learngit,且在该目录下新建一个a.md文件,文件内容为

$ cat a.md
initial row

2、初始化git仓库

在该目录下依次执行以下命令来初始化仓库

$ git init
$ git add a.md
$ git commit -m "initialization"

此时该仓库就会有一个master分支,可用git branch命令查看分支信息;其中 * 表示当前所在的分支

$ git branch
* master

3、创建分支dev

在learngit目录下执行命令`git branch dev`创建dev分支,再次查看分支信息

$ git branch
  dev
* master

此时在master与dev分支下查看到的文件内容都是一样的

4、master分支更改

在master分支下,在文件a.md的尾部添加一行`row added by master`,然后执行以下命令提交

git add a.md
git commit -m "master appends a row"

此时查看a.md的内容

$ cat a.md
initial row
row added by master

执行命令`git checkout dev`切换到dev,查看文件内容;发现文件内容并没有发现master添加的那一行

$ cat a.md
initial row

5、dev分支更改

在dev分支下,在文件a.md的尾部添加一行`row added by dev`,然后执行以下命令提交

git add a.md
git commit -m "dev appends a row"

此时查看a.md的内容

$ cat a.md
initial row
row added by dev

执行命令`git checkout master`切换到master,查看文件内容;发现文件如下

$ cat a.md
initial row
row added by master

6、其他发现

执行完上面的5个步骤后, 我们不再修改文件内容,而只是执行`git checkout master`或`git checkout dev`来切换分支,结果发现每次执行切换分支命令,a.md的修改时间都会发生变化,而且就是执行切换分支命令的时间

结论

1、我们在哪个分支下,就只会看到那个分支的内容

2、当在一个分支下修改了内容,却没有commit就切换到另一个分支时,就会报错,拒绝切换(已验证)

分析

当每一次执行git checkout [branch]时,git会把该分支的内容复写到该目录下,这样我们每次切换分支后,看到的都是该分支的内容,而且文件的修改时间也是执行切换分支命令的时间

Previous分支管理Next合并分支

Last updated 5 years ago

Was this helpful?