git版本控制相关命令

git采用快照的方式记录修改。每一次的版本都只记录上一个版本的版本号,这样保证了版本的先前追溯的稳定性,同时为分支和分布存储提供了巧妙的设计基础。

git的分支其实也是版本控制。git的分支并不是重新写一份文件,而是完全使用先前的版本记录,使用分支的指针指向。这里会发现版本的控制其实已经完全实现了分支,分支只是给了你一个存储多条路线的机会,哪怕没有分支控制,也完全可以使用reflog查看全版本,reset控制版本跳跃、更新已经生成新的分支版本,最后使用add和commit重新合并。版本控制的命令完全是为了操作方便,所谓的分支控制,其实就是版本控制。只是分支控制提供了方便的指针,显式的用于操作,事实上在push时,非主线路的版本是不推送的。这其实完全是底层语言指针设计思想的具体使用。不得不说linus对于c语言的使用真厉害。

git的另一个强大的地方,分布式也需要版本控制的基础。分布式的设计其实也就是对于版本控制的更高一层的使用,毕竟你push的每一次更新都是新的版本,提交时比较的也就是版本的更新。不过分布式推送的时候是不提交那些隐式版本的,或者说是只推送一条现在所使用的主线路,除非你提交其他分支,要不连显示的分支版本也不提交。

     git reset

版本切换命令,有三种操作方式,使用版本号、head加^以及head~加数字的方式。head本事表示当前版本,加数字的方式,数字就代表加了几个^,即该版本之前的第几个版本。后面两种方式也只能回退,而第一种可以根据版本号随意切换。后面介绍中,版本号的位置可以用三种方式实现,当然后两种仍然不能往前走,后面就不再重复写了。

在这里要区分好三个区的不同,他们就像三个链表分别对应不同的一套代码。三个区域的指针指向哪里,对应的区域就表示哪一个版本的信息。当然所能表示的信息必须都是存在commit库中的。

git reset --hard 版本名

将版本彻底回退到某一版本,版本名只需要输入前几位识别出不同即可。该命令会将working tree、index和commit三个区间的内容全部回退。

git reset --mixed 版本号

该命令为git reset默认值,回退index和commit的内容,代码不变,相当于有一个人在该版本时下载代码,并且做了修改,还没有加入index区间。

git reset --soft 版本名

该命令回退只回退commit的内容,类似于有一个人在该版本时下载代码,做了修改和添加,准备提交。

git reset file

表示只对某个文件设置,其实该命令的file可以加载之前所有版本的后面。签名的命令没有file表示默认当前的所有文件,而加上file表示只对该file文件操作。

     git log

用于显示版本信息,如果一个屏幕装不下,空格下一页,b上一页,q退出,回车下一行。

git log

查看之前的版本,不包括现在版本之后的版本。

git log --pretty=oneline

以一个版本一行的方式显示。

git log --oneline

同样以一个版本一行的方式显示,但是版本号不全显示,只显示6位,6位基本就足够标识了。

git reflog

一个版本一行的方式显示,同git log --oneline,但是多了head@{前面第几个版本,现在所在的为0。这里要记住,这里的数字不代表可以使用head~的方式使用,head方式使用的必须是在主线路上的,如果回退并直接修改了内容,现在的版本就被抛弃,只会出现在reflog中,而不再会出现在log中了。}。reflog与log不同的是reflog命令不仅仅显示之前的版本号,只要本地数据库有的版本号,不论现在处于那个版本都会显示出来。

git log --graph --all

图示版本路线。

                                

       git diff

git diff commit1 commit2 file

该命令用于比较两个版本的区别。比较时,如果不写,默认commit1为工作区,commit2默认为commit1的上一级(working tree->index->commit,只考虑先版本的,如果commit1为之前版本,commit2为工作区版本)。--cached代表index缓存区。commit仓库的版本号总是用head标识方式来代替。加file表示该文件,不加默认全部。

 

有关git的其他内容可以通过这里访问https://blog.csdn.net/astar3/article/details/80764843

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值