您的位置:首页 > 其它

Git一些实用命令

2014-11-07 11:27 232 查看
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命令后的参数为一个点"."是非常危险的。 会取消所有的本地修改(相对于暂存区)。相当于用暂存区的所有文件直接覆覆盖本地的文件,不给用户任何的机会。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: