git - 自创建以来对分支的更改?

cod*_*fun 10 git branch msysgit

我总是问自己一些关于我创建的分支的问题,我还没有确定如何完成:

  1. 我在分支中更改了哪些文件?
  2. 我对分支的实际变化(差异)是什么?
  3. 我对分支机构提交的日志是什么?

现在我想如果弄清楚如何获取所有提交给分支但没有合并到master中的提交的哈希值git cherry master <branchname>.有了这个我可以通过哈希哈希并弄清楚一切,但如果你有很多提交,这可能是耗时的.请注意,我不想与当前的主人状态进行比较.我认为关键是要知道你创建分支的master的哈希值,但我不确定如何确定它.

jth*_*ill 21

要查找当前结帐与主分支的分歧,

base=`git merge-base master HEAD`
echo $base
Run Code Online (Sandbox Code Playgroud)

找出自那时以来改变了哪些文件,

git diff --name-only $base HEAD
Run Code Online (Sandbox Code Playgroud)

显示累积的差异

git diff $base HEAD
Run Code Online (Sandbox Code Playgroud)

当你想要描述一系列提交时,你可以使用上面链接的Gabriele Petronella的答案中的语法,这是"从HEAD可以访问的所有提交,但不包括从master可以访问的提交"的master..HEAD简写HEAD ^master.缺少端点默认为HEAD,因此您可以这么说git log --oneline master..


ani*_*tel 11

假设你从master,

1. 分支后哪些文件发生了变化?

git diff master...<branchname> --name-only
Run Code Online (Sandbox Code Playgroud)

2. 分支后的完整差异是多少?

git diff master...<branchname>
Run Code Online (Sandbox Code Playgroud)

3. 分支后的提交日志是什么?

git log master..<branchname>
Run Code Online (Sandbox Code Playgroud)

您无需指定<branchname>是否已将其签出(例如,git diff master...)。

注意: git diff需要三点...git log需要双点..才能获得您要求的行为。


有关点语法的说明,请参阅: