如何在Git的某个分支上获得更改
自从分支机构分支出来以后,在分支机构上提交提交日志的最好方法是什么? 我迄今为止的解决scheme是:
git log $(git merge-base HEAD branch)..branch
git-diff的文档表明, git diff A...B
相当于git diff $(git-merge-base AB) B
。 另一方面, git-rev-parse的文档表明r1...r2
被定义为r1 r2 --not $(git merge-base --all r1 r2)
。
为什么这些不同? 请注意, git diff HEAD...branch
给了我想要的差异,但相应的git log命令给了我比我想要的更多。
在图片中,假设:
X ---Ÿ---ž---分公司 / --- ---一个B ---电Ç--- --- dÈ--- HEAD
我想获得一个包含提交x,y,z的日志。
-
git diff HEAD...branch
给这些提交 - 然而,
git log HEAD...branch
给出了x,y,z,c,d,e。
在修订列表的上下文中, A...B
是git-rev-parse
如何定义它的。 git-log需要一个修订列表。 git-diff
并不包含修订列表 – 它需要一两个修订版本,并定义了A...B
语法来表示它在git-diff
联机帮助页中的定义。 如果git-diff
没有明确定义A...B
,那么这个语法将是无效的。 请注意, git-rev-parse
联机帮助页在“指定范围”部分中描述了A...B
,该部分中的所有内容仅在修订范围有效(即需要修订版列表)的情况下才有效。
为了得到只包含x,y和z的git log HEAD..branch
,请尝试使用git log HEAD..branch
(两个点,而不是三个)。 这是相同的git log branch --not HEAD
,意味着所有提交不在HEAD上的分支。
git cherry branch [newbranch]
当你在master
分支时,你正在问什么。
我也很喜欢:
git diff --name-status branch [newbranch]
这不完全是你问的,但在相同的背景下仍然非常有用。
你想看到的是传出提交列表。 你可以使用这个
git log master..branchName
要么
git log master..branchName --oneline
我假设“branchName”被创build为“master”的跟踪分支。
同样,要查看您可以使用的传入更改:
git log branchName..master
这与我发布的答案类似: 预览Git推送
把这些函数放到你的Bashconfiguration文件中:
- gbout – git分支传出
- gbin – git分支传入
你可以使用这个:
- 如果在主:gbin branch1 < – 这将告诉你什么是在分支1,而不是在主
- 如果在主人:gbout branch1 < – 这将告诉你什么在主人不在分支1
这将与任何分支。
function parse_git_branch { git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/' } function gbin { echo branch \($1\) has these commits and \($(parse_git_branch)\) does not git log ..$1 --no-merges --format='%h | Author:%an | Date:%ad | %s' --date=local } function gbout { echo branch \($(parse_git_branch)\) has these commits and \($1\) does not git log $1.. --no-merges --format='%h | Author:%an | Date:%ad | %s' --date=local }
类似于Alex V和NDavis这样的答案,但是没有一个是完全一样的。
当已经在问题的分支
使用:
git diff master...
其中结合了几个function:
- 这是超短的
- 显示实际的变化
更新:
这应该是git diff master
,但是这也显示了diff,而不是提交的问题。
抛出一个-p在那里看到一些文件的变化
git log -p master..branch
做一些别名:
alias gbc="git branch --no-color | sed -e '/^[^\*]/d' -e 's/* \\(.*\\)/\1/'" alias gbl='git log -p master..\`gbc\`'
查看分支的独特提交:
gbl
要查看自主分支之后的当前分支的日志,请执行以下操作:
git log master...
如果您当前在master上,则可以查看不同分支的日志,因为它已经分出了master:
git log ...other-branch
git log --cherry-mark --oneline from_branch...to_branch
(3dots),但有时会显示“+”而不是“=”
我发现
git diff <branch_with_changes> <branch_to_compare_to>
更有用,因为你不仅得到了提交的消息,而且还有全部的差异。 如果你已经在分支上,你想看到和(例如)的变化想看看什么改变了主,你可以使用:
git diff HEAD master