对于一个网站,我有大师和舞台,我已经工作了大约10天的舞台。我如何确定自上次合并以来发生了什么变化,或者合并是什么时候发生的?我做过的大多数合并最终都是FF,所以我不能像git merge branch -m 'merging staging'
那样记录它们(git报告它忽略了-m)。在将staging合并到master中进行更多测试和部署之前,我通常会将master合并到staging中进行测试。
我可以标记每一个,但我担心这样做合并的混乱。我想知道的是,自从我上次将舞台合并到master中以来,大致上发生了什么变化?“这样我就可以确保我花额外的时间在期末考试中调查这些变化。有时候,同事会做出一些改变,直到这个阶段我才注意到。
我想既然staging->into->master合并很少见,我可以标记它们,然后做一个“git whatchanged tag”,但我希望有一个非标记的方法来做。谢谢.
7条答案
按热度按时间izkcnapc1#
运行良好。来自
man git-log
:下面是一个使用
--pretty=format:"%H"
只获取SHA的例子。信贷去Jefromi为他们的评论另一个答案。
dxxyhpgq2#
试试这个,它会选择提交消息以“Merge”开头的最后一个分支:
Here是一个网站,上面有一些git技巧,可能会帮助你。
oyxsuwqo3#
另一种不依赖于提交消息内容的方法:
--min-parents=2
只选择合并的提交,--max-count=1
只在历史中显示第一次提交。如果指定的提交(HEAD
)在其历史中没有任何合并提交,则输出将为空。svgewumm4#
看来这是我最好的选择:
我编辑了~/.gitconfig,添加了:
然后如果我在master上合并一个分支,它会显示为完全合并。将其作为“master”的配置选项显示了git是多么的棒,所以我仍然可以在分支中进行FF合并,在那里我可能有很多短命的主题分支,并且我不必记得在master上合并时指定--no-ff。美了
我使用此别名查看日志:
k = log --graph --pretty=format:'% Cred%h% Creet-%C(yellow)%d% Creet %s %Cgreen(%cr,%cd)%C(bold blue)<%an>% Creet ' --焦v-commit
当我以这种方式查看日志时,它描绘了一幅很好的分支图片。如果我想找到最后一个,
谢谢你的帮助
编辑:正如@jefromi在第一个答案的评论中指出的那样,这可能是一个更好的技术
git log --merges -n 1
4xy9mtcn5#
看起来你并不想知道自上次合并以来发生了什么变化,而是想知道我在分支 staging 上有哪些尚未在分支 master 上的内容?(或相反)。如果是,请查看命令
git cherry
。不过我必须承认,由于输出格式的原因,我从未使用过这个命令,这并没有多大帮助。也许有一种方法可以将此输出提供给git log/git show或类似的东西。
编辑:据我所知,使用
git whatchanged
不需要标记。只需尝试git whatchanged master..staging
,查看自上次从staging合并到master后,staging上发生了哪些变化。vql8enpb6#
为什么不简单地将您的临时分支与主分支进行比较呢?这将显示每个文件中的实际差异,而不仅仅是那些未合并的内容。还有你过去从staging到master合并时可能会丢失的东西。
尝试
git diff master..staging
或git diff master...staging
来查看它们的共同祖先与“staging”的差异。qncylg1j7#
取最新的合并并给予合并到当前分支的分支名称
MC=
git log --merges -n 1 | grep request
;{$MC##*:}; B=${BB%% };子分支=${B##/} echo $MC