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

时间:2013-04-11 16:59:08

标签: git branch msysgit

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

  1. 我在分支中更改了哪些文件?
  2. 我对分支的实际变化(差异)是什么?
  3. 我对分支机构提交的日志是什么?
  4. 现在我想如果弄清楚如何获取提交给分支但未使用git cherry master <branchname>合并到master中的所有提交的哈希值。有了这个我可以通过哈希哈希并弄清楚一切,但如果你有很多提交,这可能是耗时的。请注意,我不想与当前的主人状态进行比较。我认为关键是要知道你创建分支的master的哈希值,但我不确定如何确定它。

3 个答案:

答案 0 :(得分:20)

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

base=`git merge-base master HEAD`
echo $base

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

git diff --name-only $base HEAD

显示累积差异

git diff $base HEAD

如果您想描述一系列提交,您可以使用上面链接的Gabriele Petronella答案中的语法,master..HEADHEAD ^master的简写,这意味着“所有提交都可以从HEAD获得,但不能包括从主人可以访问的提交“。缺少端点默认为HEAD,因此您可以说git log --oneline master..

答案 1 :(得分:3)

假设您从master分支,

1。自分支以来哪些文件发生了变化?

git diff master...<branchname> --name-only

2。分支后的完整差异是什么?

git diff master...<branchname>

3。自分支以来提交日志是什么?

git log master..<branchname>

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

注意: git diff需要三点...,而git log需要双点..来获取您要求的行为。

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

答案 2 :(得分:2)

对于已更改的文件列表和实际差异,如果您知道要进行比较的2个提交,则更有意义。

如果你想看到START_SHA1END_SHA1之间的差异,你可以这样做:

git diff START_SHA1 END_SHA1

如果您只想要文件列表,可以这样做:

git diff --name-only START_SHA1 END_SHA1

如果您还想了解文件中的更改类型(例如AMDCR,{ {1}}),你可以这样做:

U