标签: git-log

我怎么能告诉Git提交中发生了什么事情,两个父母没有合并来自第二个父母的更改?

在Gitk中,我可以看到团队成员的提交(X)有两个父母,第一个父母是他自己的先前提交(A),另一个父母包含许多其他人提交(1到5).合并后,其他人(1到5和其他人)所做的所有更改都不再出现在X,B,C等...

A------------
              \
               X - B - C 
              /
1--2--3--4--5
           /
e--r--j--k
     /
l--m
Run Code Online (Sandbox Code Playgroud)

如果我提交X提交A它没有显示差异,如果我将X提交X提交5它显示所有缺少的更改.此外,在提交X,B或C时,git日志不会显示对提交1到5中的文件所做的更改.但是,如果我执行git log --full-history,则历史记录会显示在1中进行的更改到5,但这些更改仍未出现在实际文件中,并且历史记录未显示它们正在撤消.所以git log --full-history似乎与当前文件内容相矛盾.

我与提交X的用户进行了交谈.他说他没有进行重置或拒绝,他说他在相关时间内没有恢复任何提交.然而,他说他确实有时会做一个拉原点大师,导致其他人的变化被放入他的索引或工作树中,好像他已经做出了这些改变而不是这些改变的实际作者.他说,当这种情况发生时,他会做一个新的克隆,并且不会将任何东西从当地的回购推送给主人,因为他认为Git做错了什么.

这两件事是否相关(坏拉和坏合并)?

我怎样才能确切地说出发生了什么,以便我们将来可以避免这种情况?

是什么原因导致Git有时会将从原始主数据中提取的更改放在本地工作目录或索引中,就像它们是本地更改一样?

git git-pull git-merge git-log git-commit

7
推荐指数
1
解决办法
4756
查看次数

如何在Windows Git Gui中执行'git log'?

我只是使用Git Gui从GitHub克隆一个本地仓库,然后我检查了一个分支.我现在想要看到相当于做一个git log -50,但似乎无法在菜单选项或主屏幕上找到任何内容:

在此输入图像描述

如何查看最后50个更改的提交历史记录/数据?

git git-gui git-log

6
推荐指数
1
解决办法
6641
查看次数

在顶部显示git log --graph --decorate with HEAD

使用此命令:

git log --all -n30 --graph --abbrev-commit --decorate \
   --date=relative --format=format:'%h - (%ar) %s - %an%d'
Run Code Online (Sandbox Code Playgroud)

我将得到一棵美妙的树,这正是我正在寻找的,除了HEAD并不总是在顶部.

如果我删除该--all选项,我也将丢失所有显示的分支.

如何将HEAD保持在顶部并仍然可以看到最后30个元素可见的完整树?

换句话说,我得到的是

   * d4b7d5a - (foo)
   * * 44f53e2 - (HEAD)
   |/
   * 4587f32 - (bar)
Run Code Online (Sandbox Code Playgroud)

而我想得到的是:

   * 44f53e2 - (HEAD)  <- HEAD on the top
   | * d4b7d5a - (foo)
   |/
   * 4587f32 - (bar)
Run Code Online (Sandbox Code Playgroud)

git git-log

6
推荐指数
1
解决办法
517
查看次数

根据消息从git log获取任务列表

任务编号= JIRA问题编号=****(例如:7600)

假设我有一个提交列表,其中包含以下消息:

PRJ-7600 - first message
PRJ-8283 - second message
PRJ-8283 - third message
PRJ-1001 - fourth message
PRJ-8283 - fifth message
PRJ-7600 - sixth message
Run Code Online (Sandbox Code Playgroud)

第一个用于最早的提交.

通缉输出:

1001
7600
8283
Run Code Online (Sandbox Code Playgroud)

我使用以下命令列出了我的提交:

git log --author="First Last" --oneline --grep=PRJ --pretty=format:"%s" | sort
Run Code Online (Sandbox Code Playgroud)

哪里

  • committer = author(在这种情况下)
  • --grep=PRJ指定忽略自动生成的注释(" 合并分支... ")(替代--no-merges)
  • --pretty=format:"%s" 仅显示消息(删除哈希)

实际产量:

PRJ-1001 - fourth message
PRJ-7600 - first message
PRJ-7600 - sixth message
PRJ-8283 - fifth message
PRJ-8283 - second message
PRJ-8283 - third …
Run Code Online (Sandbox Code Playgroud)

git git-log

6
推荐指数
1
解决办法
1128
查看次数

如何使 git-log 向上滚动而不是向下滚动

每当我git log --all --graph --oneline --decorate在终端模拟器中查看输出时,都会在终端屏幕的顶部查看第一次提交。当我用 退出git log输出视图时q, 中的几行不再可见,因为屏幕底部附加了一些新行,用于下一个命令。

不过,通常这些顶行是最有趣的,因为它们类似于最近的 git 历史记录,所以我希望它们在我输入下一个 git 命令时仍然可见。

如何使git log输出显示在屏幕底部,即在底部查看第一个提交?您必须向上滚动才能查看较旧的提交。

注意:--reverse出于两个原因,该标志不是一个选项。

  1. 每次你必须一直滚动到底部才能查看第一次提交。那应该没有必要。我想从底部开始。
  2. 它不与--graph标志结合:fatal: cannot combine --reverse with --graph

terminal git-log less-unix

6
推荐指数
1
解决办法
2505
查看次数

'git log'可以根据提交消息忽略某些提交吗?

我正在使用git log,以便在两个分支之间生成差异.我正在使用的确切命令是:

git log --left-right --graph --cherry-pick --oneline sourceBranch...targetBranch
Run Code Online (Sandbox Code Playgroud)

我想知道的是我是否可以根据提交消息排除一些日志条目.例如,我们的测试自动化团队提交的所有提交都包含一个特定的标识符,我们称之为TEST_AUTO.目前,我的差异输出看起来像这样:

>   1e31b8x Merge pull request #1225 in base/project from feature/ABCD-1111 to master
|\  
| > b2f0dfx [ABCD-1111] rework help tour // fixes
| > 270072x [ABCD-1111] rework help tour // merge fixes
| > 98ffeax [ABCD-1111] rework help tour // merge fixes
| >   ff2e25x Merge branch 'master' into feature/ABCD-1111-rework-help-tour
| |\  
| > | f0daf2x [ABCD-1111] rework help tour // new menu
| > | …
Run Code Online (Sandbox Code Playgroud)

git git-log git-cherry-pick

6
推荐指数
1
解决办法
1770
查看次数

git:列出悬空标签

语境:

  • 假设你有一些相当棘手的 CI/CD 工作流程,它依赖于 git 标签
  • 构建功能分支并生成一些短期标签以表示产生可部署工件的提交
  • 当功能分支被压缩合并时,通常它会被删除,但不出所料,标签仍然存在
  • 比如说,经过几个月的开发,标签列表可以预见地变得毛茸茸的

因此,问题:

我将如何使用 git 命令行和可选的基本 bash 工具

  1. 列出所有给定标签可达的分支(双重标签是git tag -l --merged ${BRANCH_COMMITTISH},但我不需要给定分支的标签,而是给定标签的分支)
  2. 列出上面第 1 点输出为空的所有标签(显然这可以用 for 循环(给定 1 的任何终止实现),但也许有一些简洁的神奇 git one-liner)?

git git-log git-tag git-branch

6
推荐指数
1
解决办法
672
查看次数

删除并在另一个文件夹中重新创建后保留文件的 Git 历史记录

我有以下场景:

  1. 删除了提交 1 中名为 src/GetData.cs 的文件。
  2. 在提交 5 中创建了一个名为 src/Get/GetDataNew.cs 的文件。
  3. 在提交 7 中将 2 中的文件重命名为 src/Get/GetData.cs。

1 和 3 中的文件几乎相同,只是做了一些微小的更改,但由于多次迭代,我最终创建了一个全新的文件并删除了旧文件。有没有办法在文件 3 中保留/移动文件 1 的 git 历史记录?

我能想到的一种方法是恢复到我删除旧文件的提交,然后使用

git mv src/GetData.cs src/Get/GetData.cs

将其移动到新文件夹,但中间有很多其他提交和更改,所以我想避免这种情况。

提前致谢。

git git-log

6
推荐指数
1
解决办法
1081
查看次数

管道到“头”(osx)时,将颜色保留在“git log”中

我的 bashrc 文件中有以下别名。

alias gl="git log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"
alias glh="gl | head -n 20"
Run Code Online (Sandbox Code Playgroud)

这两个别名都用于以彩色打印 git history 的输出。然而,随着 git 的更新,git version 2.19.1 glh停止以彩色打印输出。gl仍然以彩色打印输出。有没有办法强制git log保持颜色,即使它是通过管道传输的head

操作系统:

ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G22010
Run Code Online (Sandbox Code Playgroud)

git macos git-log

6
推荐指数
1
解决办法
375
查看次数

Intellij Idea Git Log 中的行意味着什么?

在Idea中按alt+9可以看到git log窗口:

在此输入图像描述

我看到这些点代表提交。这些线代表分支吗?如果是这样,如何找出每条线代表哪个分支?

我看到如果我将鼠标悬停在一行的某些部分上,其中的一部分就会突出显示,突出显示的部分是什么意思?如果我点击它,它会变成一条虚线。刚刚发生了什么?

在此输入图像描述

有没有文章或视频详细解释 Idea git log 窗口或其使用的树状 git log 结构?我已经阅读了Idea 的 git log window 帮助页面,但关于这些行的字数很少。

git branch intellij-idea git-log

6
推荐指数
2
解决办法
2046
查看次数