当前位置:   article > 正文

【GIT】如何列出2个branch/tag/commitId 之间的所有commit_git 查看分支1中比分支2中多出来的commit

git 查看分支1中比分支2中多出来的commit

复习git log的用法

Reference:git log 用法

语法

git log [<options>] [<revision-range>] [[--] <path>]
  • 1

常用用法

git log foo bar ^baz # 表示 log/bar 中包含,但是baz中不包含的commit,`^` 在这里表示取反

# `..` 可以实现相同的含义, 注意`..`前后不可以有空格
git log origin..HEAD # 和下面这句表示相同的含义, 表示列出HEAD独有的commit
git log HEAD ^origin

# `...` 可以filter掉二者共同的commit, 注意`...`前后不可以有空格
git log A B --not $(git merge-base --all A B) # 表示A/B 中包含,但是他们最新的父节点不包含的commit
git log A...B # 表示列出A和B独有的commit
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

列出2个branch之间的所有commit

  • 有2个branch testBranch1testBranch2
git log testBranch1 testBranch2 #  testBranch1或testBranch2 包含的commit
git log ^testBranch1 testBranch2 # testBranch1不包含 testBranch2 包含的commit
git log testBranch1..testBranch2 # testBranch1不包含 testBranch2 包含的commit
git log testBranch1...testBranch2 # testBranch1或testBranch2独有的commit
  • 1
  • 2
  • 3
  • 4
  • 如果是远端(remote)的branch,加上origin
git log origin/testBranch1 origin/testBranch2 #  testBranch1或testBranch2 包含的commit
git log ^origin/testBranch1 origin/testBranch2 # testBranch1不包含 testBranch2 包含的commit
git log origin/testBranch1..origin/testBranch2 # testBranch1不包含 testBranch2 包含的commit
git log origin/testBranch1...origin/testBranch2 # testBranch1或testBranch2独有的commit
  • 1
  • 2
  • 3
  • 4

如果远端没有这个branch,会报错。

列出2个tag之间的所有commit

  • 有2个tag testTag1testTag2
git log testTag1 testTag2 
git log ^testTag1 testTag2 
git log testTag1..testTag2 
git log testTag1...testTag2 
  • 1
  • 2
  • 3
  • 4
  • 但对于tag貌似不能直接访问remote 的tag 要把tag 拉到local才可以

列出2个commitid 之间的commit

直接把前面的branch 或者tag 替换成commit id 的hash值即可

输出格式化

 git log --pretty='format:%an, %h, %cs, %s' branch1..branch2
  • 1

输出的格式如下:

Author, commitId, 2023-09-27, commit msg
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/983488
推荐阅读
相关标签
  

闽ICP备14008679号