标签: git-log

Git:如何分析具有多文件历史记录的代码?

我准备在现有项目中移动大量文件.在我这样做之前,我想牢牢掌握一些用于分析具有多文件历史记录的代码的技术.

我怎么能用git问:"这行代码来自哪里?" 当内容在其生命周期中移动了多个文件?

我知道git没有明确地跟踪重命名(有充分的理由)所以看起来我应该能够问这个,我只是不确定如何.如果有方法可视化这个也很好知道.

git renaming git-log

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

哪个提交哈希使用git-revert撤消推送合并?

我将beta分支合并到主分支中.我推到原点.我现在希望master在本地和远程合并之前就像它一样.

撤消已经推送的合并的一个很好的答案表明

git revert -m 1 commit_hash
Run Code Online (Sandbox Code Playgroud)

如果这确实是要走的路,我该如何确定commit_hash?我没有成功尝试merge-base返回的哈希:

$ git merge-base --all master beta
1f4b949b7ef97abf913ae672e3acd0907abfac1b
$ git revert -m 1 1f4b949b7ef97abf913ae672e3acd0907abfac1b
error: Mainline was specified but commit 1f4b949b7ef97abf913ae672e3acd0907abfac1b is not a merge.
fatal: revert failed
Run Code Online (Sandbox Code Playgroud)

我已经检查了分支的git-log和gitk再现,但是它们很长,我不太清楚我的解释,觉得我应该寻求帮助才能做出更大的混乱.Beta来自v2,它来自master.随着我与主人保持最新的分支机构,我们已经有一些从大师到v2和beta的合并.从beta到Master的方向的合并是我想纠正的错误.

一旦我确定了合并点,如果我发现在合并之后对master进行的任何提交真的应该在beta分支上,那么移动它们的最佳方法是什么?

git undo git-merge git-revert git-log

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

显示自主分支点以来git分支中的所有提交

我正在寻找一种方法来查看活动分支上的所有提交,因为分支点(包括它)和希望从master分支.

例如情况如:

A-B-C-D (master)
   \
    E-F (branch A)
Run Code Online (Sandbox Code Playgroud)

我希望得到提交F,E和B,而F是HEAD.

并为

A-B-C-D   (master)
   \
    E-F   (branch B)
       \
        G (branch C)
Run Code Online (Sandbox Code Playgroud)

如果G是当前HEAD,我想要提交G,F,E,B.使用--graph选项显示此信息也很棒.

现在我想出来了

git log master^..HEAD
Run Code Online (Sandbox Code Playgroud)

但它似乎显示太多信息(如来自其他分支机构的提交).谢谢你的帮助!

git version-control git-log

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

我怎么能告诉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
查看次数

在过去24小时内添加到master的日志提交

我试图显示master在过去24小时内添加到分支的提交(不包括合并提交).目前我正在使用此命令:

git log --format=format:%s --no-merges --since='24 hours ago'
Run Code Online (Sandbox Code Playgroud)

但是这有一个问题:如果提交超过24小时,但master在过去24小时内合并到分支中,则该命令不会列出提交.是否可以显示master过去24小时内添加到分支的提交,而不是过去24小时内创建的提交?

请注意我在干净的CI工作区中执行此操作,因此git reflog无法帮助我.

提前致谢!

git git-log

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

git log / show等替换终端屏幕

我最近开始zsh在iTerm2上使用(oh-my-zsh,无需自定义)。但是,我在git log或中遇到了麻烦git show

例如,以前,git log结果只是终端的一部分,就像ls -l结果一样。戒烟后git logq键,结果被保留在终端屏幕。我能够轻松地选择一些哈希ID。

但是,当前的问题是git log(或git show)结果替换了屏幕。因此,退出后git log,终端将完全删除所有git结果并返回到原始屏幕。这种行为就像vim

即使使用bashMac的默认终端应用程序,此行为也相同。这不是问题--no-pager

任何帮助将不胜感激。

git terminal git-log oh-my-zsh

7
推荐指数
2
解决办法
870
查看次数

Git日志不包括分支

请考虑以下提交历史记录:

1---R---3---5---P->                  # patch-v1.1
     \       \
      2---4---+---8---+---10---R->   # release-v2.0
           \         /
            6---7---9                # feature-foo

--> time

# 1 - 10 are commits
# P is a patch release commit
# R are major release commits
# + marks a merge commit
Run Code Online (Sandbox Code Playgroud)

我想生成更改日志release-v2.0,但由于P (patch-v1.1)已经发布,它的更改不应该是v2.0更改日志的一部分.我可以将git log命令配置为仅列出提交2, 4, 6 .. 11(即,来自release-v2.0和的提交feature-foo)吗?

git git-log git-branch

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

Git log - 如何过滤(排除)出现在`git log`中的文件?(git pathspec magic)

我需要使用该git-log命令在两个日期之间平均创建一个提交添加和删除行数的报告.

目前我使用的命令是:

git log --since="2015-12-01" --until="2015-12-31" --shortstat
Run Code Online (Sandbox Code Playgroud)

但我需要在过程中过滤一些文件.Thoses文件是自动生成的,我们不希望看到它们的影响.他们很容易通过他们的名字来识别*.generated.*

我选择使用该git-log命令,我能够获得我需要的报告,除了我没有看到如何过滤这些不需要的文件.

文档很大,我已经多次阅读了,但我没有看到任何基于名称过滤文件的内容.这是可能的,还是我必须找到另一个命令来查找提交添加/删除的行数?

git git-log git-commit

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

Git:如何以git-log格式列出特定的预告片(页脚)?

给出以下示例git commit消息:

My commit message summary

Some more body in this message...

Signed-off-by: My name <my.name@example.com>
Issue: MYPROJ-123
Run Code Online (Sandbox Code Playgroud)

我现在可以使用最近的Git版本(2.14+)解析这些" 预告片 "(页脚中的键/值参数)git interpret-trailers --parse.这似乎也集成到git-log格式选项中,例如:

git log --format="%h %s %(trailers)"
Run Code Online (Sandbox Code Playgroud)

但是,它显示了所有预告片,包括换行符.

是否可以将其限制为单个拖车令牌的值?理想情况下,我想要完成的是git-log行,只显示Issue令牌的值:

0123abcd My commit message summary MYPROJ-123
Run Code Online (Sandbox Code Playgroud)

git git-log

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

打印 git commits 加入一行的正文

如何打印 git commits 以仅打印正文(没有标题的提交消息)但在一行中?所以提交正文行被连接起来,可能用空格分隔,并打印为一次提交的一行。

例如,有两个提交 A 和 B,命令:

$ git log --format=%b
Run Code Online (Sandbox Code Playgroud)

印刷:

Commit A, line A.1
Commit A, line A.2
Commit B, line B.1
Commit B, line B.2
Run Code Online (Sandbox Code Playgroud)

但我想得到:

Commit A, line A.1 Commit A, line A.2
Commit B, line B.1 Commit B, line B.2
Run Code Online (Sandbox Code Playgroud)

git commit-message git-log

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