有没有办法在Windows下跟踪我在Git中使用的命令? 我想查看我已应用于存储库的所有命令。
我希望能够浏览命令历史记录并找出如果发生问题,则导致问题的命令。
查看提交历史记录是一件事,但是对于保留其他操作的历史记录(例如创建分支或添加远程),这些是否被跟踪?
有没有办法在Windows下跟踪我在Git中使用的命令? 我想查看我已应用于存储库的所有命令。
我希望能够浏览命令历史记录并找出如果发生问题,则导致问题的命令。
查看提交历史记录是一件事,但是对于保留其他操作的历史记录(例如创建分支或添加远程),这些是否被跟踪?
你可以使用 git-reflog 命令来查看历史记录,这里有一个 示例:
git reflog
git reflog
命令可以显示你的 HEAD 所在的所有位置,但它实际上不会显示所有的 Git 命令。那些不移动 HEAD 的 Git 命令(例如 git branch -D my_precious_branch
)将不会在其中显示。 - Yonatangit reflog --all
得到它吗? - combinatoristgit remote add foo bar
。它不会出现在 git reflog --all
中,因为它不会修改 HEAD 指针。 - Yonatangit reflog
不会显示像 git status
等命令,无论是否带有 --all
参数。 - questionto42git status
只读取数据 - 它不会更改任何内容,因此不会造成任何损害或问题。Git 本身不记录执行的所有命令。reflog 文档说:“记录分支和其他引用的末尾在本地存储库中更新的时间”。记录所有内容的 hackish 方法是使用 shell 脚本(或其他)替换 git 二进制文件,记录所有参数,然后调用原始二进制文件转发相同的参数。 - jweyrich您的命令记录可能会保存在您的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
history
。虽然它不是技术上的git,但我认为这就是你想要的。Ctrl
+R
并键入git
。Ctrl
+R
,则会通过您的历史记录进行反向搜索,寻找以git
开头的命令。如果您使用Windows PowerShell,则可以输入“git”,然后按F8键。 继续按F8可以循环浏览所有git命令。
或者,如果您使用cygwin,则可以使用^R执行同样的操作。
C:\Users\<yourusername>\
)下,会有一个名为“.bash_history”的文件,没有文件扩展名。只有在退出bash后才会创建该文件。history >> history.txt
”[ENTER]Git会显示影响索引的提交中的更改,例如git rm
。它不会存储您执行的所有git命令的日志。
然而,大量的git命令以某种方式影响索引,例如创建一个新分支。这些更改将显示在提交历史记录中,您可以使用git log
查看。
但是,有一些破坏性的更改是git无法跟踪的,例如git reset
。
因此,回答您的问题,git不会在存储库中存储您执行的git
命令的绝对历史记录。但是,通常可以通过提交历史记录插值出您执行的命令。
git history
可以用于查看在一个特定的克隆中执行了哪些命令,这很有用。 - Kyle Strandgit reflog
是你想要的。请参见下面的答案。 - Chéyogit reflog
实际上显示了命令本身。另外顺便说一句,shell只是一个稍微更直接的推断git命令的方式,但是一个git库可能被多个shell操作。最好向git询问使用了哪些命令。 - combinatorist
.git/logs
,你会看到每个分支指向的提交历史。 - Nayukipush
不会改变本地分支的状态,因此reflog
显然不会存储push
操作,因此查看.git/logs/refs/remotes/*/*
是查看您的push
历史记录的唯一方法。 - Kyle Strand