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

nil*_*ile 86 git

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

我希望能够返回命令历史记录并找出导致问题发生的命令.

查看提交历史将是一回事,但是为了保留其他操作的历史记录,例如创建分支或添加远程,这些是否被跟踪?

jwe*_*ich 168

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

git reflog
Run Code Online (Sandbox Code Playgroud)

  • @PauAI而``git reflog`将显示你的HEAD所关注的所有位置,它实际上不会显示所有的git命令.不移动头部的Git命令(例如`git branch -D my_precious_branch`)不会显示在那里. (15认同)
  • @combinatorist尝试添加一个遥控器(例如OP给出的):`git remote add foo bar`。它不会出现在git reflog --all中,因为它不会修改HEAD指针。 (2认同)

ran*_*dom 54

shell命令中可能包含命令日志.

history
Run Code Online (Sandbox Code Playgroud)

如果查看飞行执行命令列表不适合您,请将列表导出到文件中.

history > path/to/file
Run Code Online (Sandbox Code Playgroud)

您可以通过使用grep管道将限制导出的转储仅显示带有"git"的命令

history | grep "git " > path/to/file
Run Code Online (Sandbox Code Playgroud)

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

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"
Run Code Online (Sandbox Code Playgroud)

使用该编号,您可以使用感叹号重新执行该命令

$ !518
git status -s
Run Code Online (Sandbox Code Playgroud)


crm*_*cco 8

如果您正在使用CentOS或其他Linux风格,那么只需在提示符处输入Ctrl+ R并输入git.

如果你继续按Ctrl+,R这将在你的历史记录中反向搜索以开头的命令git


Sco*_*des 7

输入history您的终端。从技术上讲,它不是git,但我认为这是您想要的。


mam*_*ing 6

如果使用Windows PowerShell,则可以键入"git"并按F8键.继续按F8循环显示所有git命令.

或者,如果你使用cygwin,你可以用^ R做同样的事情.


Ale*_*lex -6

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

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

然而,有些 git 无法跟踪的破坏性更改,例如git reset.

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

  • `git reflog` 就是你想要的。请参阅下面的答案。 (6认同)
  • @cp.engr:OP 询问 git 命令的历史记录,而不是 git 提交的历史记录。这个答案建议从 git 提交中推断命令,这是一项非常艰苦的工作,而且并不总是可行。`git reflog` 实际上显示了命令本身。另外,顺便说一句,shell 只是推断 git 命令的一种稍微更直接的方法,但 git 存储库可以被多个 shell 访问。最好问一下 git 使用了什么命令。 (4认同)
  • 事实上,正如下面的答案正确提到的那样,确实如此。“history”显示执行的命令列表(自安装以来)。 (3认同)
  • @UmeshABhat `git History` 对于查看*在特定克隆*中执行了哪些命令很有用。 (3认同)
  • *shell* 存储历史记录,但 git 不存储,对吗? (2认同)
  • 这个答案有什么问题,以至于被否决了这么多? (2认同)