Git详细使用三部曲(二)

Git详细使用三部曲(二)

之前写了一篇关于Git的基本使用三部曲的博客-Git详细使用三部曲,通过项目详细介绍了Git有关add commitpush的使用,今天就来讲讲更加高级的命令,保证你在项目开发中用得着。项目依然使用上次的项目,下面就步入正题吧。

这次我们还是会按照开发流程来讲解这些命令的使用,具体会讲解到的命令如下:

功能命令
创建分支命令git branch
创建分支并且切换分支git checkout
rebase命令(可以处理冲突和合并提交)git rebase
恢复进度git stash
重置代码git reset
查看历史信息git reflog
里程碑git tag
  • 1 Git branch|checkout 假如我们现在有一个新的task,需要项目中加一个工具类来判断一个应用是否安装,那么我们就先需要建立一个分支来开发我们的功能,我们的代码都是提交到master分支的,换言之也就是master作为主分支,都是从master分支分出新的分支来开发的,master肯定是最新的代码,我们先看git branch和git checkout命令:
功能命令
创建分支基于当前头指针(不切换分支)git branch [branchname]
创建分支基于某一个提交(不切换分支)git branch [branchname] [start-point]
基于当前分支创建并且切换分支git checkout -b [branchname] HEAD
基于当前分支前一个分支创建新分支git checkout -b [branchname] HEAD~1

我习惯使用git checkout -b [branchname],因为创建后就直接切换到branchname上,免得重新操作一步骤,我们现在使用git checkout -b add-package-utils,如下图,这样分支就创建并且切换好了。
创建分支并且切换分支

  • 2 git rebase命令:这个命令在开发中用到的比较高频,只要不是一个人搞开发,基本都会用到,这个命令的使用场景如下:比如现在同时在master分支上创建了一个分支A,和B,分别搞开发任务A,B;等A任务开发结束,提交A并且合并到master后,这时候如果B任务也开发结束了,要提交的话,仅仅通过push想合并到master是会起冲突的,因为这时候的B分支已经不是基于最新的master分支了(因为从master分支创建B分支后,master分支又合并了一个A),所以这时候想要解决的话就要用到rebase命令了:
功能命令
基于master或者commitId进行rebase到最新git rebase -i master/commitId
继续rebasegit rebase --continue
跳过rebasegit rebase --skip
停止rebasegit rebase --abort

一般我们有冲突后,需要解决冲突,然后git add下,然后调用git rebase --continue命令,一般就会提示成功了,这时候就可以继续操作了。

  • 3 git stash命令: 使用场景是:有时候我们正在开发一个任务,突然有一个bug需要修改,我们当前的代码怎么办?方法有很多,可以commit一下,等会reset回来;也可以stash命令操作,这里着重分析一下stash命令:
功能命令
切换到其它分支前保存当前工作区代码git stash
然后切换回来的时候git stash pop
详细保存当前代码git stash save [commit content]
显示保存的stash列表git stash list
恢复保存的某一个进度git stash apply stash@{n}
删除某一个stash标记git stash drop stash@{n}
清除stashgit stash clear

Git stash使用
我们这里显示保存了两个stash信息,然后drop了stash@{0},通过stash list查看,只剩下一个stash信息,stash@{1}自动变成了stash@{0},git stash clear后在stash list查看,stash信息没有了。stash命令的作用在开发中可以被reset替代的,使用频率不是很高,但是看个人使用命令爱好。
git stash clear

  • 4 git reset的使用 使用场景:当我们想重置我们的代码到某一个commit的时候,就会使用到这个命令。我们都知道Git的代码分为三个区域保存,我在上一篇文章中讲过,reset的三个命令分别针对这三个区域发挥作用,命令如下:
功能命令
仅仅替换引用指向git reset – soft [commit]
执行替换暂存区内容和引用(默认)eg:git reset HEAD用HEAD指向的目录树重置暂存区git reset – mixed [commit]
将执行替换工作区和暂存区以及指针引用git reset – hard [commit]

说到reset命令,不得不提一下revert命令,这两个命令的差别是如下:

差别命令
revert的提交记录会保存到记录中git revert
reset的记录会丢失git reset

如下图,git revert 37c7c41后,查看log信息,多了一条revert的信息。
git revert

Note: 命令git reset --hard [commit]要慎用,因为会把你工作区域的代码也给覆盖掉,但是也不是没有解决的办法,使用git reflog命令就可以查看最近的提交信息,有了这个commit的信息,然后就可以使用reset命令重置代码到某一个提交了:
git reflog命令

  • 5 git tag 使用场景:tag是里程碑的意思,一般我们会在版本发布的时候对这一段的代码进行里程碑操作,使用git tag命令:
功能命令
创建taggit tag -m [msg] [tagname] [commit]
查看tag列表git tag -l 或者git tag --list
删除taggit tag -d [tagname]
推送tag到远端git push origin [tagname]

**Note:**我们在这里打的tag是不会随着push branchname命令直接就推送到远端的,原因很简单,如果这样的话我们的tag库岂不是都被大家搞的很乱,只有在使用针对tag的push才会将tag信息同步到远端,就是上面表格中最后一个命令。

好了,今天的博客就写到这里了,有问题和意见欢迎评论区留言。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值