GIT记录操作

  • 历史记录
git log
与git show的不同之处在于,log

git log 会按提交时间列出所有的更新,最近的更新排在最上面

-p		            用来显示历史提交的内容差异.可以指定显示条数
--author            指定作者
--stat              在每次提交的下面列出所有被修改过的文件,会显示+-号
--pretty            使用其他格式显示历史提交信息。
--name-status	    显示新增、修改、删除的文件清单。
-(n)                仅显示最近的 n 条提交
--since,--after     仅显示指定时间之后的提交。
--until,--before    仅显示指定时间之前的提交。
--author            仅显示指定作者相关的提交。
--committer         仅显示指定提交者相关的提交。
--grep              仅显示含指定关键字的提交
-S                  仅显示添加或移除了某个关键字的提交
--graph             查看分支合并图。
--oneline           一行显示日志;--graph 也可以用这个.
--all               所有分支的日志
--decorate          标记会让git log显示每个commit的引用
--simplify-by-decoration 只显示被branch或tag引用的commit


实例:
    # 思否的RobinLi用户, 提供的格式化后的日志树
    git log --graph --pretty=format:'%C(bold red)%h %Creset- %C(bold yellow)%d %C(bold cyan)%s %C(bold green)[%cr] %C(bold magenta)[%cn] %C(bold green)[%ci]'

	# 查当前分支 提交记录{日志文件}默认所有
	git log

	# 比较本地的master分支和origin/master分支的差别
	git log -p master..origin/master   

	# 查看指定条数的修改日志
	git log -n *    

	# 查看指定文件的所有修改历史
	git log -p 文件/目录

	# 单行显示记录,不显示详细内容
	# 其实--pretty=* 但凡记录输出都有该命令,用于美化输出
	git log --pretty=oneline 文件名
	
	# 查看指定分支的提交日志
	git log 分知名
	
	# 查远程的BanchName分支
	git log origin/分知名
	
	# 查询全部的分支
	git log --all
  • 也可以使用gitk插件查看记录树,树也更好看一些
gitk是git的一个bin工具,如果git不包含gitk只能说明当前使用的git版本过老。
Mac下直接使用gitk命令 会弹出一个应用来查看
gitk XXX可以使用所有的git log 命令
  • 点线图git log --graph的点线图
*表示一个commit, 注意不要管*在哪一条主线上
|表示分支前进
/表示分叉
\表示合入
|/这个符号表示新分支

不一样的颜色代表不一样的分支,分支名不显示
  • 查看所有操作日志的(可以用以,反版本回退实际上可以恢复任何操作)
git reflog
git reflog --hard Head
  • 对比差异
git diff
对比两个文件,分支,库,commit的差异性

HEAD        意为当前commit版本
HEAD^       上一个版本
HEAD^^      上上个版本
HEAD~100    向前100个版本

# git diff提示fatal: ambiguous argument 'origin/lm_index_ad': unknown revision or path not in the working tree.
说明要对比的分支中,有一个是本地不知道的分支.所以要git fetch一下.同步一下分支的情况

# 查看文件具体修改(详细操作,见GIT常用分支相关命令)
git diff FileName

# 将新建文件添加至版本库
git add FileName

# 对比当前版本和远程分支的差异
git diff HEAD FETCH_HEAD 

# 对比当前和该远程库中的master分支中,该文件的改动
git diff HEAD origin/master application/views/tpl.header.phtml #

# 查看两个分支的代码差异/不仅分支,HEAD也可以/commit值也可以
git diff 分支名1 分支名2            

# 查看尚未暂存的文件更新了哪些部分
git diff                           

# 查看当前分支和指定分支的差异
git diff branchName                 

# 查看两个分支的差异
git diff branch1 branch2            

# 查看两个分支中的某个文件的差异
git diff branch1 branch2 FileName   

# 查看尚未暂存的某个文件更新了哪些
git diff filename                   

#  查看已经暂存起来的文件和上次提交的版本之间的差异
git diff --cached                  

# 查看已经暂存起来的文件和上次提交的版本之间的差异
git diff --staged                   

#  查看已经暂存起来的某个文件和上次提交的版本之间的差异
git diff –cached filename          

# 查看某两个版本之间的差异
git diff CommitHead1 CommitHead2    

# 查看某两个版本的某个文件之间的差异
git diff CommitHead1:filename CommitHead2:filename  

# 查看工作区区和版本库中的差异
git diff HEAD                       

#  查看该文件在工作区中和版本库中的文件的差异
git diff HEAD fileName             

## 查看上次修改的内容和当前文件的差异
git diff HEAD 显示工作目录与git仓库之间的差异,
而git diff HEAD^ 则显示上一次提交之前工作目录与git仓库之间的差异。
所以我们在git pull后,可以通过git diff HEAD^ 来查看拉下来的文件有那些具体的修改。
git diff HEAD^^为上上次的修改
这里用git show HEAD 和git show HEAD^也可以
  • 查看指定CommitID提交的内容
git show
与log的不同之处在于仅仅用于查看当次的修改内容


# 查看本次修改的内容
git show

# 仅仅查看某次提交的内容
git show commitID 文件/目录