Git学习记录3


前言

今天发现了一个特别好的网站:Learn Git Branch
接下来,我将通过这个网站继续学习。

一、分支创建与切换

1.1 git commit -m “< your_message >” 从当前分支提交下一记录。

在这里插入图片描述

git commit -m "my first commit!"

在这里插入图片描述

1.2 git branch < your_branch_name > 在当前位置创建一个新的分支指针。

git bransh newImage

在这里插入图片描述

git commit -m "my first branch"

在这里插入图片描述

1.3 git checkout < your_branch_name >切换当前分支指针

在这里插入图片描述

git checkout newImage
git commit -m "my first other branch commit"

在这里插入图片描述

1.4 git checkout -b < your-branch-name >创建一个新的分支同时切换到此分支

git checkout -b bugFix

二、分支的合并

我们新建一个分支,在其上开发某个新功能,开发完成后再合并回主线。

2.1 git marge < your_branch_name> 合并两个分支时会产生一个有两个父节点的提交记录。

在这里插入图片描述

git marge bugFix

在这里插入图片描述

git checkout bugFix
git marge main

在这里插入图片描述

2.2 git rebase < your_branch_name> 从最近父节点逐个复制版本到另一个分支。

在这里插入图片描述

git rebase main

在这里插入图片描述

git checkout main
git reabase bugFix

在这里插入图片描述

由于 bugFix 继承自 main,所以 Git 只是简单的把 main 分支的引用向前移动了一下而已。

三、指针的移动和分支的修改

在接触 Git 更高级功能之前,我们有必要先学习在你项目的提交树上前后移动的几种方法。

3.1 git checkout < space_Hash> 分离HEAD指针指向目标Hash值的记录

  1. HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。
    HEAD 默认指向当前分支上最近一次提交记录。
  2. 分离的 HEAD 就是让其指向了某个具体的提交记录而不是分支名。
    在这里插入图片描述
    在命令执行之前的状态如下所示:
    HEAD -> main -> C1
    HEAD 指向 main, main 指向 C1
git checkout C1

在这里插入图片描述
分离了HEAD指针:HEAD->C1

3.2 git checkout < space+^/~(number)> 使HEAD指向space的相对位置的记录

通过指定提交记录哈希值的方式在 Git 中移动不太方便。在实际应用时,也并没有可视化提交树供参考,所以不得不用 git log 来查查看提交记录的哈希值。并且哈希值在真实的 Git 世界中也会更长(基于 SHA-1,共 40 位。Git 对哈希的处理很智能。你只需要提供能够唯一标识提交记录的前几个字符即可)

使用相对引用的话,你就可以从一个易于记忆的地方(比如 bugFix 分支或 HEAD)开始计算。
相对引用非常给力,这里我介绍两个简单的用法:

  1. 使用 ^ 向上移动 1 个提交记录
  2. 使用 ~ 向上移动多个提交记录,如 ~3

在这里插入图片描述

git checkout main^

在这里插入图片描述

git checkout C3
git checkout HEAD^
git checkout HEAD^
git checkout HEAD^
//git check HEAD~3

在这里插入图片描述

3.3 git branch -f < your_branch_name> <to_space> 强制修改分支位置

在这里插入图片描述

git brach -f main HEAD~3

在这里插入图片描述

3.4 git reset < space > 通过回退记录来实现撤销本地代码改动。

git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。

在这里插入图片描述

git reset HEAD^

在这里插入图片描述

Git 把 main 分支移回到 C1;现在我们的本地代码库根本就不知道有 C2 这个提交了。
(在reset后, C2 所做的变更还在,但是处于未加入暂存区状态。)

虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!

3.5 git revert < space > 通过添加新版本来换源远程代码的改动

在这里插入图片描述

git revert HEAD^

在这里插入图片描述

在我们要撤销的提交记录后面居然多了一个新提交!这是因为新提交记录 C2’ 引入了更改 —— 这些更改刚好是用来撤销 C2 这个提交的。也就是说 C2’ 的状态与 C1 是相同的。

总结

命令含义
git commit -m "<your_message>"从当前位置提交下一记录。
git branch <your_branch_name>在当前位置创建一个新的分支。
git checkout -b <your-branch-name>创建一个新的分支同时切换到此分支
git marge <your_branch_name>合并两个分支时会产生一个有两个父节点的提交记录。
git rebase <your_branch_name>从最近父节点逐个复制版本到另一个分支。
git checkout <your_branch_name>使HEAD指针指向当前分支指针
git checkout <space_Hash>分离HEAD指针指向目标Hash值的记录
git checkout <space+^/~(number)>使HEAD指针指向space的相对位置的记录
git branch -f <your_branch_name> <to_space>强制修改分支位置
git reset <space>通过回退记录来实现撤销本地代码改动
git revert <space>通过添加新版本来换源远程代码的改动
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值