Git 获取我所在分支的历史记录

joh*_*994 10 git git-branch git-reflog git-history

我需要查看我正在使用的分支的历史记录。例如我有 4 个分支:master、b-1、b-2、b-1-1。Th\xd0\xb5 分支“b-1-1”是分支“b-1”的子分支。首先我在 master 分支,然后在分支 b-1 ,然后在分支 b-1-1 ,然后在分支 b-2 ,然后再次在 b-1-1 。我使用的分支的历史如下所示:

\n
    \n
  • b-1-1
  • \n
  • b-2
  • \n
  • b-1-1
  • \n
  • b-1
  • \n
  • 掌握
  • \n
\n

在git中可以这样做吗?如果是,那么如何?\n我尝试检查 git 日志,但它不是我要搜索的内容。

\n

Rom*_*eri 15

查看git reflog以检查HEAD仓位的历史记录。

还有git reflog <branch>特定分支的历史。

请在此处查看文档。


(奖励)
如果在您的上下文中有用,您还可以使用@{-<n>}构造创建一个别名来提取它们

$ git config alias.last '!f() { for i in $(seq 1 $1); do git name-rev --name-only --exclude=refs/tags/\* @{-$i}; done; }; f'

$ git last 3
# outputs the 3 last checked out branches
Run Code Online (Sandbox Code Playgroud)

  • 你的别名建议非常有用,可惜它不是正常 git 命令的一部分。我会使用别名branchistory。如果可以的话我会给你50分!您还可以添加别名 &lt;&lt; |sort|uniq &gt;&gt; 来删除重复项... (3认同)

NHD*_*aly 5

这种git reflog带有一些grep过滤的调用似乎对我有用:

git reflog | grep checkout | grep -o 'to .*$' | grep -o ' .*$' | less
Run Code Online (Sandbox Code Playgroud)

例如:

 b2
 master
 b1
 master
 b2
 b1
 b2
...
Run Code Online (Sandbox Code Playgroud)


Mar*_*nik 2

我认为您无法看到您在问题中阐述的某种意义上检查了哪个分支以及按什么顺序。Branch 是一个指针,只有在提交时该指针才能更改。

例如,如果您:

  • 签出现有分支分支 ( git checkout abc)
  • 查看其日志 ( git log -n 10)
  • 签出另一个现有分支 xyz ( git checkout xyz)

那么 git 将不会记得你正在检查abc分支

话虽如此,您可以使用以下命令查看最近 3 天期间所做的提交:

git log --since="3 days ago" --author=<HERE_COMES_YOUR_NAME_IN_GIT> --all
Run Code Online (Sandbox Code Playgroud)

这个--since参数可以非常灵活,1 day ago准确的时间,1 week ago都是可能的值,请查看文档以及这个SO线程

另一个有趣的选择是使用(以其最基本的形式):git for-each-ref --sort=-committerdate refs/heads/

此命令将按降序打印所有分支中的所有提交。SO 中已经有关于此问题的线程,它提供了比我所能提供的更多可能使用此命令的选项,因此请也检查一下。

  • 来吧。`git reflog|awk '/: checkout:/{print $NF}'` (2认同)