[英]How do I know if a branch has already been merged in SVN/Mercurial/Git?
是否有任何方法可以轻松解密(即一目了然)分支是否先前已与另一个分支或主干合并? 我能够弄清楚的最近的是查看提交注释并显示合并的提交注释。 这样做的缺点似乎是,除非您知道从哪个分支导入提交注释,否则无法解密哪些分支已经合并。
编辑 :Mercurial或Git是否比SVN更直观?
Mercurial或Git是否比SVN更直观?
是的,非常如此:
sjl at ecgtheow in ~/src/hg-review on webui at tip
[10] $ hg glog
@ changeset: 113:c5debb475273 Steve Losh tip webui
| summary: Add file folding.
|
o changeset: 112:a3ad66636756 Steve Losh webui
| summary: Show skipped-line comments.
|
o changeset: 111:2e65351af702 Steve Losh webui
| summary: Rough cut of line-level comments.
|
| o changeset: 110:b599ca22418d Steve Losh
|/| summary: Merge the bug fix.
| |
o | changeset: 109:e2ddb8631463 Steve Losh webui
| | summary: Fix the event not defined bug.
| |
| o changeset: 108:001f5ecfd9bc Steve Losh
|/| summary: Merge the webui skipped line counts -- too important to leave in the
| | branch.
| |
o | changeset: 107:1cc8e18b1b43 Steve Losh webui
| | summary: Add skipped line counts to diffs.
| |
编辑: Git有一个git log --graph
选项与Mercurial的几乎相同,除了没有帮助你在这里@
字符。
在git上,你可以使用git log
来询问一个分支是否包含另一个分支:
git log topic ^master # list all commits in branch 'topic', but not in 'master'
如果未返回任何内容,则topic
已合并。
类型:
svn help mergeinfo
你得到:
mergeinfo: Display merge-related information.
usage: mergeinfo SOURCE[@REV] [TARGET[@REV]]
Display information related to merges (or potential merges) between
SOURCE and TARGET (default: '.'). If the --show-revs option
is not provided, display revisions which have been merged from
SOURCE to TARGET; otherwise, display the type of information
specified by the --show-revs option.
Valid options:
-r [--revision] ARG : ARG (some commands also take ARG1:ARG2 range)
A revision argument can be one of:
NUMBER revision number
'{' DATE '}' revision at start of the date
'HEAD' latest in repository
'BASE' base rev of item's working copy
'COMMITTED' last commit at or before BASE
'PREV' revision just before COMMITTED
--show-revs ARG : specify which collection of revisions to display
('merged', 'eligible')
在git中,您可以使用--contains
列出包含其他分支的分支:
git branch -a --contains feature
将显示已合并给定功能的所有分支(使用-a
,包括远程分支)。
git show-branch
将显示git show-branch
之间关系的大量细节。 学习有效阅读它需要一些时间,但它非常有价值,并会在很小的空间内向您展示。
如果chotchki提到的服务器版本至少为1.5,并且您的存储库已使用此类版本创建或升级,则属性svn:mergeinfo将添加到发生合并的任何目录中。
假设您已经在主干中重新集成了两个分支,您可以检查(替换为您的URL):
svn propget svn:mergeinfo svn://localhost/Test/trunk
合并了哪些分支以及修改了哪些修订。 输出示例:
/branches/dev/1:35-36
/branches/dev/2:38-39
使用像TortoiseSVN这样的GUI客户端,检查图表或查看repo-browser中目标目录的属性。
在Git中 ,您可以使用git branch --merged <commit>
,它列出了从给定提交可以访问的所有分支( <commit>默认为HEAD,这意味着git branch --merged
将列出合并到当前提交的所有分支) 。
或者您可以使用git show-branch branch1 branch2
或git log --graph --oneline branch1 branch2
以图形方式查看历史记录(或使用一些图形历史记录浏览器,如gitk,QGit,Giggle,GitX等)。
如果您有权访问TortoiseSVN并且repo是1.5或更高版本,您可以查看它生成的存储库图。 然而,SVN通常会使跟踪合并变得很困难。
您可以使用svnmerge.py来管理分支。 它告诉您哪些分支已经合并,它只合并新的修订版。
您可以尝试使用--dry-run
选项执行合并并检查输出(即查看它是否要进行合并)。
就个人而言,当我将一个分支与另一个分支合并时,我在提交消息中记录了修订号的确切范围。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.