我做了一些搜索,发现:
git log myBranchName
Run Code Online (Sandbox Code Playgroud)
作为可能的解决方案.但是当我的分支是主分支时会发生什么?当我跑:
git log master
Run Code Online (Sandbox Code Playgroud)
它似乎返回所有提交给任何分支的东西.根据我读过的内容,它列出了与主分支相关的所有提交.知道了,我怎么才能调出主分支的提交历史记录?
par*_*ydr 53
我想这就是你想要的
git log --first-parent master
Run Code Online (Sandbox Code Playgroud)
引用手册
在看到合并提交时,仅遵循第一个父提交.在查看特定主题分支的演变时,此选项可以提供更好的概述,因为合并到主题分支往往只是关于不时调整到更新的上游,并且此选项允许您忽略引入的单个提交通过这样的合并你的历史.
pok*_*oke 14
由于Git的分支模型,提交不属于单个或多个分支.分支是整个提交图中指向单个提交对象的指针.因此,当您在X中表示提交是"在分支X上"时,通常意味着在分支X指向的提交处开始时可以访问它.
因为git log
,默认行为等于git log HEAD
HEAD指当前分支当前指向的提交.因此,如果您在主分支上,它等于git log master
,显示从最近提交开始时可以访问的所有提交.
不幸的是,你所指的是某个分支的提交在Git中没有明确定义.如果我在master上进行提交,然后创建一个指向同一提交的新分支(例如使用git branch newbranch
),那么除了名称之外,该分支在字面上与主分支完全相同.所以每一个"在分支大师身上制造"的财产现在也意味着"在分支新分支上制造".因此,您不能在Git中拥有此属性.
即使是parkydr的解决方案,它显示了仅在合并的一侧进行的所有提交,也不是一个防故障解决方案.理想情况下,它会隐藏在单独的非主分支上进行的所有提交,然后将这些提交合并回主服务器.因此,您只能获得直接对主线进行的提交,或者在其他一些提交中进行合并提交的提交.但是有两件事会妨碍它的运作:
git merge somebranch
on master将快进提交,导致master分支指向与somebranch相同的提交.因此,您"丢失"这些提交最初在单独分支上创建的信息.你可以强制Git总是创建合并提交,虽然使用,git merge --no-ff
但这对你后来无济于事.所以,最重要的是,你无法安全地获得这样的历史.你最好习惯Git灵活的分支模型是如何工作的.
归档时间: |
|
查看次数: |
13041 次 |
最近记录: |