git - Git虚拟分支拓扑结构

  显示原文与译文双语对照的内容

我在自己的机器上独立地玩弄 git,甚至我觉得很难维护所有分支和提交的心智模型。 我知道我可以做一个 git log 来查看提交历史,但是有一种方法可以查看整个分支的地形,类似于那些看起来到处都是用来解释分支的ascii映射?


. -A---M---N---O---P
/////
 I B C D E
 ////
 `-------------'

起,它已经感觉就像有人恢复得怎么样,想拿起我的软件仓库会有困难的工作啊到底什么是 going.

我想我是受 accurev流的浏览器- -

时间:

我通常使用


git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"

使用颜色( 如果你的shell是 Bash ):


git log --graph --full-history --all --color 
 --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"

这将打印text-based表示形式,如下所示:


* 040cc7c (HEAD, master) Mannual is NOT built by default
* a29ceb7 Removed offensive binary file that was compiled on my machine and was hence incompatible with other machines.
| * 901c7dd (cvc3) cvc3 now configured before building
| * d9e8b5e More sane Yices SMT solver caller
| | * 5b98a10 (nullvars) All uninitialized variables get zero inits
| |/
| * 1cad874 CFLAGS for cvc3 to work succesfully
| * 1579581 Merge branch 'llvm-inv' into cvc3
| |
| | * a9a246b nostaticalias option
| | * 73b91cc Comment about aliases.
| | * 001b20a Prints number of iteration and node.
| |/
|/|
| * 39d2638 Included header files to cvc3 sources
| * 266023b Added cvc3 to blast infrastructure.
| * ac9eb10 Initial sources of cvc3-1.5
|/
* d642f88 Option -aliasstat, by default stats are suppressed

( 你可以只使用 git log --format=oneline ( 看上去不那么漂亮,但它将会系承诺消息发送到数字恕我直言) 。

要为该命令创建快捷方式,你可能需要编辑你的~/.gitconfig file:


[alias]
 gr = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"


然而,作为 Sodel,Vociferous 注释在注释中,这样的长格式命令很难记住。 通常,这不是问题,因为你可以将它放到 ~/.gitconfig 文件中。 但是,如果有时你得登录到远程机器,你可以在不修改了配置文件,你可以使用一个更简单而更快速地键入汾?


git log --graph --oneline

这些食谱( 基于git日志或者 gitk ) 中的任何一种,你可以添加 --simplify-by-decoration 若要折叠无趣的线性部分的历史。 这使得拓扑在一次可见。 我现在可以理解没有这个选项的大历史 !

我觉得有必要在来写这些,因为它看起来似乎并没有成为为已知当如此。 我知道我想要it,后关于形象化的历史,它不出现在大部分的堆栈溢出问题,我花了相当多的研究从而 find--even ! 我终于在这个 Bug 报告中找到了它。 堆栈溢出的第一次提到似乎是的答案 Pelisse 。

我喜欢使用 git log,来做:


 git log --graph --oneline --branches

( 也有 --all,用于查看远程分支)

使用最新的Git发行版: 介绍了因为 1.6.3 ( 周四,7 2009年05月 )

  • " --pretty=<style>"命令的日志家族选项现在可以拼写为" --format=<style>"。
    于此外,相关 --format=%formatstring 是一个

  • " --oneline"是" --pretty=oneline --abbrev-commit"的同义词。


PS D:gittestsfinalRepo> git log --graph --oneline --branches --all
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
| | * 8183707 a first bug10 fix
| |/
| * e727105 a second evol for 2.0
| * 473d44e a main evol
|/
* b68c1f5 first evol, for making 1.0

你还可以限制日志显示( 提交次数)的范围:


PS D:gittestsfinalRepo> git log --graph --oneline --branches --all -5
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix

( 只显示最后 5个提交)


我不喜欢当前选定的解决方案是:


 git log --graph

显示的信息太多( 当我只想查看快速摘要时):


PS D:gittestsfinalRepo> git log --graph
* commit 4919b681db93df82ead7ba6190eca6a49a9d82e7
| Author: VonC <vonc@laposte.net>
| Date: Sat Nov 14 13:42:20 2009 +0100
|
| a second bug10 fix
|
* commit 3469e13f8d0fadeac5fcb6f388aca69497fd08a9
| Author: VonC <vonc@laposte.net>
| Date: Sat Nov 14 13:41:50 2009 +0100
|
| a first bug10 fix
|

gitk 很棒,但强制我离开另一个窗口的shell会话,而显示最后一个n的提交通常是足够的。

Gitk 对我来说有些痛苦。

enter image description here

激发我写 GitVersionTree

enter image description here

"99.999%的时间是由 git lg 查看历史,0.001 % 是 git log"

只想共享可能有用的2日志别名。 ( 从。gitconfig配置)


[Alias]
 lg = log --graph --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short
 hist = log --graph --full-history --all --pretty=format:'%Cred%h%Creset %ad %s %C(yellow)%d%Creset %C(bold blue)<%an>%Creset' --date=short

一个漂亮的基于web的工具是 ungit 。 它在 node.js & git支持的任何平台上运行。 它是如何工作的有一个视频 对于那些发现这些事物当中比阅读更容易- -

enter image description here

...