Git一些实用命令

git log  --pretty=raw  --graph [SHA1]
显示这个SHA1对应的提交以及其父提交、祖父提交等。  --graph表示以图形化展示

git log  --graph --oneline 
一行简略显示

git log --graph --pretty=oneline --stat
一行简略显示,操作包含哪些文件

git cat-file -t [SHA1 | HEAD | master]
显示对应的的类型

git cat-file -p [SHA1 | HEAD | master]
显示对应的提交的内容详细信息,
若对一个git cat-file -t 返回类型为tree的SHA1执行该命令,将得到该tree中包含的文件



若对一个blob执行该命令,则显示该文件的内容。


若对一个返回类型为commmit的SHA1执行该命令,将得到括 tree, parent, author, commiter, summary





git rev-parse master [SHA1 | HEAD | master]
显示对应的SHA1

举例:
    HEAD^表示其比父提交的SHA1, HEAD^^祖父提交。 HEAD^{tree}显示其对应的树的SHA1.
     git rev-parse f9808^{tree}
tia


tail -10 .git/logs/refs/heads/master
显示master的变化记录




git reflog show master|head -10
表示<refname>之前第<n>次改变时候的SHA1的值


git reset --hard master@{2}
表示将工作空间恢复到master之前第二次改变时候的状态


git reset HEAD <paths> 
取消之前执行的 git add <paths>命令时改变的暂存区
git 
----------------------------------------------------------------------------------------------------------------
git show-branch [default | --remotes | --sha1-name]

参数什么都不写,显示当前分支的历史记录
--remotes表示显示所有remote repository中的分支的历史记录
--sha1-name表示每一个节点以哈希码显示代替分支名;不写这个参数表示每一个节点以分支名字显示



-------------------------------------------------------------------------------------------------------------------------------------
用法一: git checkout  [-q]  [<commit>]  [--]  <path> ..
用法二: git checkout  [<branch>] 
用法三: git checkout  [-m]  [ [-b  | --orphan ]  <new_branch>]  [<srart_point>]  



* 重置reset一般用于重置暂存区(除非加上--hard参数,否则不会重置工作区),而检出checkout命令主要是覆盖工作区(如果<commit>不省略,也会替换暂存区中相应的文件)。



第一种用法(包含了路径<path>的用法)不会改变HEAD头指针,主要用于指定版本的文件覆盖工作区中对应的文件。如果省略<commit>,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中对应文件。

第二种用法(不使用路径<paths>的用法)则会改变HEAD头指针。之所以后面的参数写作<branch>,是因为只有HEAD切换到一个分支才能对提交进行跟踪,否则仍然会进入“分离头指针”状态。在“分离头指针”的状态下的提交不能被引用关联到,从而可能会丢失。所以第二种用法的最主要的作用就是切换到分支。如果省略<branch>则相当于对工作区进行的状态检查。


第三种用法主要是创建和切换到新的分支(<new_branch>),新的分支从<start_point>指定的提交开始创建。新的分支和我们熟悉的master分支实质没有什么不同,都是在refs/heads命名空间下的引用。


git checkout branch
更新HEAD以指向branch分支,以及用branch分支指向的树更新替换暂存区和工作区。

git checkout 与 git checkout HEAD
汇总显示工作区、暂存区与HEAD的差异。

git checkout  --  filename
用暂存区中的filename文件来覆盖工作区的中的filename文件,相当于取消自上次执行的git add filename以来的本地修改。



git checkout branch  --  filename
维持HEAD的指向不变,用branch所指向的提交中的filename替换暂存区和工作区中的相应的文件。注意会将暂存区和工作区中的filename直接覆盖掉。


git checkout --  . 或者 git checkout .
注意git checkout命令后的参数为一个点"."是非常危险的。 会取消所有的本地修改(相对于暂存区)。相当于用暂存区的所有文件直接覆覆盖本地的文件,不给用户任何的机会。















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值