git 命令大解析

git branch

git branch branchName :
效果:生成一个branch,名字为branchName
git checkout -b branchName:可以快速创建branch并且把HEAD指针指向这个branch
git branch -f branchName location
移动branchName 这个分支指针到某一个具体的位置,如果此时HEAD指针指向branchName指针,那么HEAD也会被一起移动.如果HEAD分离,那么branchName指针自己单独移动
ps:很多操作HEAD指针的动作,如果当HEAD指针指向了某一个branch的时候,那么这个branch会和HEAD一起移动:如git commit ,如果HEAD被分离了的话,commit的时候其实是HEAD指针去指向自增的node.

git reset:

git reset后面跟一个位置:如git reset HEAD^
作用的对象是:node<-branch<-HEAD模式,HEAD不能分离(必须要指向某一个branch)
效果是:带动branch<-HEAD一起到某一个位置(node)上,不仅可以回退,还可向后,所以说了这个命令是带动branch和HEAD指针到某一个位置上.

这个命令是不是很像git branch -f branch +location?没错!

git revert:撤销

git revert nodeName(也就是commitID)代表要撤销某个节点
这里一开始master*在c2上,然后用了git revert c2命令,代表要撤销c2(不想用c2了,想用c1)
在这里插入图片描述
作用是新增一个节点,其实c2‘ 节点和c1节点是一致的,这样就可以把它推送到远端,别人就可以用回退的节点了.

git rebase

git rebase location
是把HEAD当前所在的位置的分支搞到location处

相对位置:

首先相对位置指的都是某一位置的前面,而不是后面!
1.^
比如:HEAD^指的是HEAD指针所在节点的前一个节点的位置
但^2代表的是第二个父节点
在这里插入图片描述

2.~
其实和^相比,~能够一次向上移跨多个节点. 如HEAD~2等于两次HEAD^

小场景:
自己先clone下来了一个一项目,并对项目commit了一次,而此时同事已经对此项目push了一次commit.那么现在我想要push 我的commit应该怎么办?
如果直接push,git会直接拒绝,因为我的本地分支落后于远程分支,所以我应该先下载下来远程分支,然后merge或者rebase变成最新的分支,最后再push.

这个网站很好,动画学习git:
https://learngitbranching.js.org/?demo=&locale=zh_CN

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值