如何在文件的git日志中查看分支和标签?

技术标签: git  记录

我可以获得Git Repo的漂亮记录图::

git log --all --graph --decorate

这显示了与每个提交相关的分支和标签(如果有)。

同样,我可以查看存储库中任何文件的提交历史图:

git log --all --graph --decorate foobar.cpp

但这并未显示每个提交中附加的分支和标签。

有没有办法在文件的git日志中显示分支和标签?

这是一个简单的存储库,有3个提交,2个分支(masterfeature1). readme1.txt 在所有3个提交中都进行了修改。 readme2.txt 在第一次提交中添加了,之后未触及。

存储库的git日志显示分支名称和 HEAD:

enter image description here

git日志 readme1.txt 显示分支名称和 HEAD:

enter image description here

但是,git日志 readme2.txt 既不显示分支名称也不显示 HEAD:

enter image description here

一个提交 readme2.txt 应该同时具有分支名称和 HEAD 也。那是因为如果我结帐 master 或者 feature1 分支,我会得到这个承诺 readme2.txt。在现实世界中,您可以想象这可能是如何有用的,知道文件的提交属于哪个分支。

如何获取GIT日志以显示此文件的那些分支名称?

看答案

您可以尝试使用 --source --branches,但是这里有一个问题。

作为 Elpiekay在评论中指出,这里的问题是分支或标签没有指向 直接到 定期的提交。值得记住的是,吉特(Git)的分支和标签名称充当指针,指向一个不变的图,本身包含指针。也就是说,首先我们有图形本身:

<--o  <--o  <--o  <--o
   ^           ^
    \           \
     o  <--o  <--o

每个地方 o 是一个提交节点,每个箭头都是一个单向弧连接到某些前身节点的节点。 (这里最低,最正确的节点有两个传出弧,所以它是一个 合并提交.)

在该图的顶部,我们添加了一些外部箭头,导致一些节点,我们将调用它们 分支 或者 标签。分支名称是可以是可变的(可变的)指针,而标签名称则是不变的:

 v1.0
   |
   v
<--o  <--o  <--o  <--o   <--develop
   ^           ^
    \           \
     o  <--o  <--o   <--master

--decorate 选项告诉 git log 那就是,当它打印图中一个节点的哈希ID时, 如果 该节点有一些指向它的“外部箭头”, git log 应该打印其名称(在括号中,被逗号隔开)。

当您使用文件名参数时,您会告诉 git log: 仅打印那些提交节点,其中该提交的父和该提交本身之间的差异表示文件已修改。 (您还打开Git称呼的 历史简化,以后很重要。)通过抑制具有这些外部箭头的提交节点的打印输出,您也可以抑制装饰。

git确实提供了 --source 选项 git log,但这有点有限。什么 --source DIS是修改图形步行算法,以便对于每个最初访问的提交节点,它记得在此特定节点中带来的命令行分支或标记参数。这可能是 HEAD,或一个分支或标签名称,可能是从 --branches 或者 --all 或类似的论点。然后,当它通过其队列工作时 - 由于合并引起“行走叉”,修订步行代码将每个图节点放在队列中,并以某种顺序漫步,由您指定的任何拓扑排序选项确定 - 收到相同的副本,源注释到每个访问的节点中。

假设我们将大写字母名称名称名称为上图中的每个节点:

 v1.0
   |
   v
<--A  <--B  <--C  <--G   <--develop
   ^           ^
    \           \
     D  <--E  <--F   <--master

现在假设您使用 --decorate --source --branches --tags (或者 --decorate --source --all),使git从节点开始 A, G, 和 F “同时”。

节点 A 从标签到达 v1.0, 所以是 --sourcev1.0。节点 G 从分支名称到达 develop, 所以是 --sourcedevelop。节点 F 从分支名称到达 master, 所以是 --sourcemaster。现在我们开始图形步行。

首先访问哪个节点?这很难说。实际上,git使用任何节点的最高 提交时间戳。 (如果有领带,git任意使用这些节点。)我们在这里看不到提交时间戳 G:我们先访问那个。 (请注意,即使您自己在一台计算机上进行这些提交,也可以将您喜欢的任何时间戳记到任何提交中。 )

打印节点 G,我们将看到 --sourcedevelop 和装饰 (develop)。这插入节点 C 进入队列 G的来源,即 develop.

如果我们访问 F 首先,而不是 G 首先,我们将用一个 --sourcemaster 和装饰 (master)。这将插入节点 C 进入队列 F的来源,即 master!

简而言之 我们到达节点的方法 CB: 通过 develop 或通过 master。当我们使用时 git log --source 我们会看到 这两个,但我们不一定知道 哪一个。限制是只有一个 --source 归因。附有的任何来源 C但是,同一来源将附加到 B。(同时节点 ED 只能获得 master 作为他们的来源。)

达到节点的方法 A,因为标签;但是我们会看到的 v1.0 就像它一样 --source 当那个标签进入 git log矩节点的数据结构 A 进入队列。(这些 --source 注释仅在 git log 运行:它们从未写回存储库。)如果步行开始访问节点之前 A,他们会复制这个 v1.0 作为他们的来源。

请注意,节点仅输入图形步行列表一次。 节点的初始列表是由命令行参数形成的(或使用 HEAD 如果您没有提供起点)。之后,访问节点插入所有孩子,除非已经拜访了这些孩子。每当列表中有多个节点时,下一个要访问的节点都会通过是否使用 --author-date-order, --date-order, 或者 --topo-order 选项。


智能推荐

git查看和删除远程分支

git branch -a 查看所有分支包括远程分支(红色部分) git branch 查看所有本地分支 git push origin --delete 分支名 删除远程分支 git branch -d 分支名 删除本地分支(不能在当前分支删除) git branch -D 分支名 强制删除本地分支...

git的创建标签与分支合并

git的创建标签与分支合并 一. 创建标签 二. 分支合并 一. 创建标签 小乌龟右键找到创建标签 带上标签名称 push推送时勾选标签的提交 二. 分支合并 选择要合并到当前工作分支中的分支,例如当前所在的分支是 master,选择 HEAD,则会将 HEAD 中的代码合并到 master 中,如下图所示:...

Android中如何在命令行中查看某个文件的内容

在Android中,假如我们在程序开发中使用SharedPreferences对象在路径:/data/data/[PackageName]/shared_prefs目录下创建了一个 userinfo.xml 文件,并在该文件中保存了一些基础的信息。如果我们想查看该文件的内容,该如何查看呢?有两种方法可以查看,第一:采用Eclipse中自带的 File Explorer 工具把该文件导出来[pull...

详解 KDTree

简介 kd树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。 一个KDTree的例子 上图的树就是一棵KDTree,形似二叉搜索树,其实KDTree就是二叉搜索树的变种。这里的K = 3. 首先来看下树的组织原则。将每一个元组按0排序(第一项序号为0,第二项序号为1,第三项序号为2),在树的第n层,第 n%3 ...

linux 环境下设置Kettle的转换,作业定时执行简单操作

1,Centos目录下面创建三个文件(kettleFile--存放kettle的转换或者作业;kettleLogs--存放运行中的日志;kettleShs--存放任务定时的shell文件) A 2,对应的shell定时文件设置: ①Kettle的转换文件对应的shell文件--test_tr.sh(kettle中的pan.sh是针对转换的) #!/bin/bash currTime=$(date ...

猜你喜欢

小趋势2

复杂世界中的微变量 美 马克.佩恩 架构 本书为6大类,以50篇短文讲述复杂世界的50种小趋势,这些看似微小的变化,正在给我们身处的社会造成巨大的变革。 一.爱情和感情 二.健康和饮食 三.科技 四.生活方式 五.政治 六.工作和业务 1.1全职先生 由男性养家糊口的传统观念业已被颠覆 更多的女性接受更好的教育 更多的男性自愿或被迫成为全职先生 成为一名全职先生的关键,在于不要把排在收入榜第2名所...

linux如何安装与配置Linux VNC服务

说明: 文章前半部分是转载别人的文章,具体详看:http://gushiren.blog.51cto.com/3392832/1673788 一、Redhat上VNC Server配置 前提:连接到互联网,将使用yum在线安装VNC服务器 1.安装 TigerVNC Server # yum searchtigervnc-server   返回大概如下内容: tigervnc-server.x86...

VMWare Workstation 15 虚拟机无法连接网络的问题解决

VMWare Workstation 15上安装了虚拟机以后,一直无法连接到网络。查看尝试网络上各种的配置一直无法解决,自己鼓捣,发现了一种新的可能解决方法。 桥接模式——》配置适配器——》只保留你主机电脑的无线或者网络配置(无线或者有线)...

UE4 C++学习之解决中文输出乱码的问题

任务:解决UE4C++中文输出乱码的问题 解决方案:将涉及到输出中文的文件编码格式改为UTF-8(VS默认为GB2313)。 第一步:自定义菜单栏 因为VS2019高级保存设置默认是没有开放的,所以我们需要先自定义菜单栏将其开放: 第二步:设置文件编码为UTF-8    这样,C++的中文到UE4的输出就不会乱码了。...

谷粒商城品牌管理校验(十)

68、商品服务-API-品牌管理-JSR303分组校验 JSR 303 分组校验 (1)为什么使用 分组校验?   通过上面的过程,可以了解到单个方法的校验规则。   如果出现多个方法,都需要校验 Bean,且校验规则不同的时候,怎么办呢?   分组校验就可以去解决该问题,每个分组指定不同的校验规则,不同的方法执行不同的分组,就可以得到不同的校验结果。 (2)基本认识   JSR 303 的每个注...

问答精选

How does Gmail recognize email signatures (alternatively, "What's the best way to recognize email signatures?")

Gmail automatically greys text that looks like a signature. Anyone have any guesses how it does this? (I've noticed that it depends on the presence of the sender's name, but I think that's only part o...

Identifying Cats vs Dogs: Error in Flattening in Keras Tensorflow

I am working to further develop my understanding in Keras and have come upon a confusing error. I am using the most recent packages through Anaconda. The error appears to be with model.add(Flatten()),...

Get min and max values for getOrientation on accelerometer?

I am currently working with the accelerometer on Android, and have run into an interesting situation. I need to find out the maximum values for the following, WITHOUT requiring the end user to flop th...

Collapse all list and expand only the selected list in vuetify

I have a v-list-group with 2 sub-group inside it like in the image shown below. Whenever I click the parent list-group other groups are getting collapsed, but when I click a sub-group inside a list-gr...

Codestyle in SonarQube

We are using SonarQube for analyzing an Symfony Project. In the IDE(PHPSTORM) we setup a predefined Codestyle (PSR2) and the same in SonarQube. SonarQube complains about the following code style and s...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答