【git】git教程(2)常用命令

git分支管理(当前分支main)

# 基于当前分支创建分支bugFix
git branch bugFix
# 切换到bugFix分支
git checkout bugFix

# 以上两步等同于
git checkout -b bugFix

git分支合并(当前分支main)

# 将bugFix上的提交合并到main分支上
git merge bugFix

git merge

git分支变基(当前分支main)

git checkout bugfix
git rebase main

在这里插入图片描述

# 将main分支指向bugfix
git checkout main
# 因为此时的bugfix基于main,所以只是简单的将main指向bugfix
git rebase bugfix

git 分离HEAD

上面我们一直在checkout [分支名], 其实我们还可以checkout [hash]。之所以可以这么做,是因为其实有一个叫做HEAD的指针指向分支名,当我们checkout [hash]时,HEAD将直接指向hash提交节点,我们再进行commit时,HEAD 将移动到最新的提交hash,但之前的分支指针是没有移动的。

git checkout C4
# 做一些内容,然后提交,便形成了下图,可以看到bugFix的指向是没有动的
git commit 

在这里插入图片描述

# 通过^,不用指定hash,就可以指向bugFix分支所指hash的上一个hash
git checkout bugFix^

# 通过~3,不用指定hash,就可以指向bugFix分支所指hash向上3个所在的hash

在这里插入图片描述

git 移动分支名到指定节点

# 将main分支强制移动到HEAD的上一个节点
git branch -f main HEAD^
# 将main分支强制移动到HEAD的上3个节点
git branch -f main HEAD~3
# 将main分之强制移动到指定的hash
git branch -f main [hash]

在这里插入图片描述

git reset 和 git revert

原始的分支如下所示:
在这里插入图片描述

# 将local回退到main,C3将被丢弃
git reset main

# 撤销C2的提交(适用于远程推送,reset不可用于远程推送)
git checkout pushed
git revert C2

结果为:
在这里插入图片描述

自由修改git提交树

  • 使用cherry-pick
# 最开始我们的HEAD指向main指向C5,然后使用cherry-pick
git cherry-pick C2 C4
# 则有以下的提交树

在这里插入图片描述

  • 使用git rebase -i 交互式
# 最近4个提交进行处理
git rebase -i HEAD~4
# 可以对近四个提交进行:调整顺序,删除不想要的提交,合并提交等操作,调整后将形成新的提交

在这里插入图片描述
以上所有都是在本地进行操作,后续会有操作远程仓库的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值