[Git] 系列二高级命令学习记录

[Git] 系列二高级命令学习记录

Author: Xin Pan

Date: 2022.09.17


在基础命令之后,开始总结高级命令。

HEAD

git 中的HEAD指针,其值存储在repo_dir/.git/HEAD中,或者也能通过git symbolic-ref HEAD查看。

HEAD 总是指向当前分支上最近一次提交记录。它指向最近一次提交的分支名。当然他会跟着具体的commit而改变。

当HEAD和当前的最新commit不同时,称之为分离HEAD状态。

Level相对引用

在提交树上移动,有两个办法

方法一

通过git log 查看每次提交的哈希(SHA-1),然后通过git checkout移动。

方法二

通过相对引用(^)这个符号叫做相对引用。

# 假设现在处于main,分支的最新的commit。想要回到main的父提交
git checkout main^
# 或者
git checkout HEAD^
# 二者等价
# 这里的checkout 使用switch 替换也行

# 如果想回到父父(也就是爷爷)提交
git switch HEAD^^
# 这么写也是可以的,但是网上滚的越多^也是越多,不方便。这是可以使用~符号进行多级滚动。
git switch HEAD~2 # 意思是HEAD指向HEAD的爷爷,回滚2级

当希望指向别的分支时可以使用-f强制移动。

git branch -f NewBranch HEAD~2
# 将NewBranch 强制指向HEAD的爷爷分支。

撤销变更

有两个办法git resetgit revert。摘下网页原文。

git reset 通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。

但是git reset改变了本地,对远程无效。也就是别人的本地代码无效,这时候如果想改动在别人机器也有效,那么使用git revert

从实现上git revert相当于把HEAD^重新commit一次去覆盖现在的HEAD而已。挺有意思的小操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值