在Git中执行的命令的历史记录或日志


96

有没有办法可以跟踪在Windows下在Git中使用的命令?我想查看在存储库中应用的所有命令。

我希望能够回顾一下命令历史记录,并找出引起问题的命令(如果发生的话)。

看到提交的历史记录是一回事,但是对于保留其他操作(例如创建分支或添加远程对象)的历史记录,是否可以跟踪?


3
暂且不谈,但是如果您查看.git/logs,则会看到每个分支指向的提交的历史记录。
Nayuki 2011年

1
@Nayuki由于push荷兰国际集团不会更改本地分支的状态下,reflog显然不存储pushES,所以在看.git/logs/refs/remotes/*/*是看你的必由之路push历史。
凯尔·斯特兰德

Answers:


-8

git将显示影响索引的提交更改,例如git rm。它不会存储您执行的所有git命令的日志。

但是,大量git命令以某种方式影响索引,例如创建新分支。这些更改将显示在提交历史记录中,您可以使用查看git log

但是,有一些git无法跟踪的破坏性更改,例如git reset

因此,要回答您的问题,git不会git在存储库中存储已执行命令的绝对历史记录。但是,通常可以通过提交历史记录来插补您执行的命令。


3
实际上,正如下面的答案正确提到的那样。“历史记录”显示了执行的命令列表(自安装以来)。
Umesh.A Bhat 2015年

2
外壳存储的历史,但Git不会吧?
亚历克斯(Alex)2015年

3
@UmeshABhat git history对于例如查看在特定克隆中执行哪些命令很有用。
凯尔·斯特兰德

5
git reflog是你想要的。请参阅下面的答案。
Chéyo

3
@ cp.engr:OP询问git命令的历史记录,而不是git commits的历史记录。这个答案建议从git commit推断出命令,这是非常艰巨的工作,并非总是可能的。git reflog实际上显示命令本身。而且,顺便说一句,shell只是推断git命令的一种更直接的方法,但是git repo可以被多个shell触及。最好问一下git使用了什么命令。
组合

184

您可以使用git-reflog查看历史记录(此处为示例):

git reflog

18
@PauAI虽然git reflog 会显示您的HEAD跟随的所有位置,但实际上不会显示所有的git命令。不会移动头部的Git命令(例如git branch -D my_precious_branch)不会显示在那里。
Yonatan

@Yonatan,你不明白git reflog --all吗?
组合

2
@combinatorist尝试添加远程(如OP给例如): git remote add foo bar。它不会出现在中git reflog --all,因为它不会修改HEAD指针。
Yonatan '18年

git reflog不会显示类似git statusaso。的命令,带有或不带有--all参数。
洛伦兹

62

您的命令记录可能在您的Shell历史记录中可用。

history

如果您不希望看到执行命令的列表,请将该列表导出到文件中。

history > path/to/file

您可以使用grep将导出的转储限制为仅显示其中带有“ git”的命令

history | grep "git " > path/to/file

历史记录可能包含这样格式化的行

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

使用数字,您可以使用感叹号重新执行命令

$ !518
git status -s

8

如果您使用的是CentOS或其他Linux版本,则在提示时输入Ctrl+ R并输入git

如果您一直按Ctrl+,R则会在您的历史记录中反向搜索以开头的命令git



6

如果使用Windows PowerShell,则可以键入“ git”,然后按F8。继续按F8键循环浏览所有git命令。

或者,如果您使用cygwin,则可以使用^ R执行相同的操作。


在正常的Windows会话中,您可以使用F7键获取一个小窗口,该窗口为您提供了在该会话中输入的所有命令的列表
milso,

0

我发现在Windows用户下我的“ home”文件夹中的git bash版本“ 2.24.0.windows.2”中,将存在一个名为“ .bash-history”的文件,该文件夹中没有文件扩展名。它仅在您退出bash之后创建。

这是我的工作流程:

  1. 退出bash之前,键入“ history >> history.txt” [ENTER]
  2. 退出bash提示
  3. 按住Win + R打开“运行”命令框
  4. 输入shell:profile
  5. 打开“ history.txt”以确认已添加我的文字
  6. 在新行中,按[F5]输入时间戳记
  7. 保存并关闭历史记录文本文件
  8. 删除“ .bash-history”文件,以便下一个会话将创建一个新的历史记录

如果您真的想要积分,我想您可以制作一个批处理文件来完成所有这些操作,但这对我来说已经足够了。希望它可以帮助某人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.