Git的基本命令及分支理解存在的问题

Git的基本命令

Git的四个工作区域

  1. Remote:远程仓库

  2. Repository: 本地仓库

  3. Index: 暂存区

  4. Workspace: 工作区

    pull
    fetch/clone
    push
    checkout
    commit
    add
    Remote
    Repository
    Index
    Workspace
  5. 执行git init初始化库。

  6. 通过git config --global user.name XXX以及git config --global user.email XXXX设置用户签名

  7. git status查看仓库状态

  8. git reflog查看版本信息

  9. git log查看版本详细信息

  10. 创建好文件hello.txt后:

  11. git add hello.txt将文件追踪到暂存区

  12. git commit -m "first commit" hello.txt 提交第一个版本到本地仓库

  13. git reset --hard 7位版本号穿梭回对应版本(head指针指向该版本)

Git的分支

命令function
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定分支合并到当前分支

e.g. 我在master分支上创建并commit了第一个版本,在hot-fix分支上修改了这个版本

当master分支只有一个版本时

此时创建新分支hot-fix,版本信息中head指针变为指向两个分支,个人认为此时两个分支下共享同一个版本

在这里插入图片描述

此时在hot-fix分支下进行文件内容修改,是可以切换回master分支的,且master分支下文件内容改变,查看版本信息,两个分支下的版本相同,head指针仍然指向两个分支。
在这里插入图片描述

git add后,修改后的文件被送入暂存区,版本信息不变,此时仍然可以git checkout切换分支

在这里插入图片描述

切换到hot-fix后,commit之后,hot-fix视角下查看版本信息,发现版本改变,共有两个版本,当前head指向hot-fix下的新版本
在这里插入图片描述

而当我们再次切换回master分支,查看版本信息时,该分支只显示最初commit的**“first commit”**版本,head指向master分支下的该版本。

在这里插入图片描述

此时在master分支下,我们再次修改文件,并尝试git checkout切换,结果如下,这时已不能切换,提示信息要求我们在修改信息后git commitgit stash才能切换。

在这里插入图片描述

我们commit文件后,master显示两个版本:

在这里插入图片描述

切换到hot-fix,依然显示之前的两个版本:
在这里插入图片描述

个人理解与不懂的地方

head是一个指向分支的指针,当master只有一个版本时创建新分支,此时显示的是**HEAD ->master,hot-fix,这点是不太理解的**,指针不该只指向一个分支嘛,此时的版本是两个分支共享的,在一个分支修改文件后可以不经过add,commit便切换到另一个分支,且分支的文件同步改变,难道是在master分支时指针指向为head->master->hot-fix->commit的文件,当切换到hot-master分支后改变指针指向为head->hot-fix->master->commit的文件

搜素相关内容,发现工作区和缓存区内容是公共的,不从属于任何一个分支,所以可以理解切换分支时内容同步改变,但是当再次commit一个版本后,两个分支便不再“共享”最初的版本,此时再尝试在一个分支中修改但不add,commit文件,便无法切换分支。

看了看四个工作区域的图,感觉又理解了一些,个人理解

每次git checkout时都会从对应分支读取文件到工作区,起初时刚创建新分支时,由于新分支没有文件,此时两个分支的版本是“共享”的,切换分支时不会覆盖掉工作区文件;而在新的分支commit新版本后,两个分支开始独立,每次切换分支会将该分支的当前版本读取到工作区进行覆盖,所以在工作区修改文件但未commit就进行checkout时会进行判断和阻拦。(不知道对不对,并且还是不清楚最初"共享"的机制是不是上文理解的改变指针指向)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值