博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

git log、git diff

Posted on 2017-07-17 11:30  bw_0927  阅读(788)  评论(0)    收藏  举报

git diff hash1 hash2 --stat

  1.  test | 4 ++--
  2.  
    test2 | 3 ++-
  3.  
    2 files changed, 4 insertions(+), 3 deletions(-)

 

git diff <local branch> <remote>/<remote branch>



git log origin/master path          查看远程分支的log
 
1.本地与远程的差集 :(显示远程有而本地没有的commit信息)
git log local_branch..origin/remote_branch
2.统计文件的改动
git diff --stat local_branch origin/remote_branch
 
git log --since="2020-02-01" --pretty=format:"%cd %h %s"
 

作者:匿名用户
链接:https://www.zhihu.com/question/53601264/answer/135801911
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 


git diff hash1 hash2 filename    #查看不同commit中一个文件的差异

git diff hash1 hash2 filename > patch_name

 

git log --name-only

git show commit_id --name-only

git branch --contains commit_id

 

git diff tag                    比较tag和HEAD之间的不同。

git diff tag file               比较一个文件在两者之间的不同。
git diff tag1..tag2             比较两个tag之间的不同。
git diff SHA11..SHA12           比较两个提交之间的不同。
git diff tag1 tag2 file or
git diff tag1:file tag2:file    比较一个文件在两个tag之间的不同。
 
 
 
git log file                    查看一个文件的改动。
git log -p                      查看日志和改动。
git log tag1..tag2              查看两个tag之间的日志。
git log -p tag1..tag2 file      查看一个文件在两个tag之间的不同。
git log tag..                   查看tag和HEAD之间的不同。
git log --pretty=oneline 
 
git log origin/master -n 3
origin/master看到的是本地pull过来时的origin/master的指针
如果有人提交了代码到远程仓库,本地不进行git pull时, git log origin/master是不会看到别人的提交记录的,需要git pull后才能看到
 
 
本地仓库没有更新(git remote update),不可能看到远端仓库的log(git log origin/master)
如果你只是不希望影响到本地仓库的代码(远端与本地做merge),你可以按如下命令来做:

git remote update    # 本地仓库更新,拿到远端的所有元数据(objects)
git log origin/$BRANCH       # $BRANCH就是你的远端branch
 
 
 
 
git log --oneline --decorate --graph
git log --pretty --graph --oneline
 
https://zhuanlan.zhihu.com/p/26227256
 
http://blog.csdn.net/u011240877/article/details/52586664
 

比如我们有 2 个分支:master, dev,现在想查看这两个 branch 的区别,有以下几种方式:

1.查看 dev 有,而 master 中没有的:

git log dev ^master 

git difftool c4a688 c4a688^    #比较c4a688和前一个commit之间的区别。

 

同理查看 master 中有,而 dev 中没有的内容:

git log master ^dev

同理查看 master 中有,而 远程分支中没有的内容:

git log master ^origin

2.查看 dev 中比 master 中多提交了哪些内容:

git log master..dev

注意,列出来的是两个点后边(此处即dev)多提交的内容。同理,想知道 master 比 dev 多提交了什么:

git log dev..master    # 跟git log ^dev master 效果一样
 

3.不知道谁提交的多谁提交的少,单纯想知道有什么不一样:

git log dev...master

4.在上述情况下,再显示出每个提交是在哪个分支上:

git log --left-right dev...master

 

这里写图片描述

注意 commit 后面的箭头,根据我们在 –left-right dev…master 的顺序,左箭头 < 表示是 dev 的,右箭头 > 表示是 master的。

截图中表示这三个提交都是在 master 分支上的

 git log --left-right --cherry-pick errlog_branch...p4_server   #忽略cherry-pick