我喜欢看我的git日志的方式
git log --graph --oneline --all --decorate
Run Code Online (Sandbox Code Playgroud)
除了我发现有用的输出之外,还有分支名称.但是,如果我删除了一个分支,那么上面的代码就不再显示了.我的意思是看到一堆像:
* 87c3294 (QueueExample) blah blah
Run Code Online (Sandbox Code Playgroud)
更具表现力(特别是当列表变长时)比一堆更具表现力
* 87c3294 blah blah
Run Code Online (Sandbox Code Playgroud)
这个问题的答案,特别是这个评论似乎意味着分支名称仍然"在某处".
如何在输出中git log或至少以其他方式打印它们?
或者,我如何从git分支的输出中删除分支,同时仍然保持它们的目的git log?
Eth*_*own 27
在Git中,分支只是指向在该分支上添加新提交时移动的提交的指针.换句话说,一旦指针移动,就没有先前提交在该分支上的内存.这对我来说是一个难以理解的概念.也许这就是名称:"branch"让我想到通过边连接的多个节点,但在Git中,分支实际上只是一个节点.
git log尽职尽责地对任何指向它们的分支进行提交.例如,我创建了一个repo,在分支主机上提交"one","two"和"three",在分支功能上创建"uno","dos"和"tres",然后将功能合并回主服务器.这是git log在删除分支之前告诉我的内容:
* 9eb6e93 (HEAD, master) Merge branch 'feature'
|\
| * 523e2ac (feature) tres
| * 6d3cc0f dos
| * 1bc0b2e uno
* | d39734b three
* | 779d37b two
* | facbcbf one
|/
* 58848f4 Initial commit.
Run Code Online (Sandbox Code Playgroud)
很容易被人误以为"(特征)"注释在某种程度上是指右边的那个分支,但事实并非如此:它只是指提交523e2ac.
请注意,默认情况下,当Git创建合并提交时(9eb6e93在我们的例子中),它会自动添加一条注释,说明它正在合并分支'feature',所以有一些记录显示那里有分支,但它只是一个注释,仅此而已.
当我删除分支"功能"时,除了提交523e2ac不再标有"(功能)" 之外,没有任何更改:
* 9eb6e93 (HEAD, master) Merge branch 'feature'
|\
| * 523e2ac tres
| * 6d3cc0f dos
| * 1bc0b2e uno
* | d39734b three
* | 779d37b two
* | facbcbf one
|/
* 58848f4 Initial commit.
Run Code Online (Sandbox Code Playgroud)
所以,回答你的问题,不,一旦你删除了一个分支,你就无法git log用该分支名称来批注提交(因为它不再存在).但是,您有一些替代方案:
不要删除分支.留下分支是没有害处的,除了当你打字时它会弄乱你的屏幕git branch.此外,您可能希望重新使用分支名称,如果不删除分支,以后可能会导致问题.
在删除分支之前标记提交.标签实际上是一个不移动的分支.您甚至可以使标记名称与分支名称相同.
满足自己对合并提交的自动评论.如前所述,当Git进行合并时,默认情况下,它引用在提交注释中合并的分支的名称,从而创建分支存在的记录.对我来说,这是最干净的解决方案,基于分支在Git中的工作方式.由于分支实际上并不是指一系列提交,因此只存在分支存在的历史后果.
分支历史可能会延续的另一个地方是您的reflog,它只记录您要切换到的分支.它主要用于灾难恢复(ooops,我并不是要删除那个分支!),它对你所谈论的那种分支历史并不是很有用.
| 归档时间: |
|
| 查看次数: |
12366 次 |
| 最近记录: |