问题标签 [git-reflog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1136 浏览

git - 如何正确使用`git reflog --since=...`?

我有一个常规git reflog --date=iso显示很多条目的存储库,例如查看此片段https://gist.github.com/FreddieChopin/0206c9ef530a056c624b065eed048c9d

您可能会注意到,2 月 19 日、22 日、23 日、24 日、25 日和 26 日有 reflogs。

但是,如果我想将输出限制在某些日期,这将无法按预期工作。例如git reflog --date=iso --since="2017-02-20",仅给出此https://gist.github.com/FreddieChopin/fb7619dee8fde055a1cce6f6ff2f6eb6 - 它停在“52896f49 HEAD@{2017-02-24 20:53:29 +0100}”,即使自 20 日以来有 reflogs在那之前的二月。甚至还有 24 日的 reflogs 时间更短,所以我不知道为什么它会停在那里。

我检查过的另一个存储库也有同样的问题,所以这似乎与 reflog 本身有关,而不是特定的存储库。另一个 repo 的问题甚至更奇怪,例如git reflog --since="50.weeks"给出了我最近几天的提交,同时git reflog --since="60.weeks"开始更早地回到过去——在那个 repo 中,几年前也有定期提交。

另一方面,git log --since=...完全按预期工作,所以我不确定这里有什么问题......

0 投票
1 回答
447 浏览

git - 按日期查找已删除的提交

我知道我在 2017 年 1 月 1 日对我的 repo 进行了一些重要的更改,之后我做了一些工作,但我也意外删除了一些提交。

是否可以从特定日期恢复或查看已删除的提交,例如 01/01/2017 的提交?

0 投票
2 回答
753 浏览

git - 为什么我的 git reflog 不回去克隆

我有一个关于 git reflog 的问题:

在我的项目开始时,当我执行 git reflog 时,我能够看到我原来的 git clone 命令的所有步骤。

今天, git reflog 不再返回到 git clone 命令。

更准确地说, git reflog 返回 4143 行,最后几行被截断:

谁能解释我为什么?

有没有办法获得整个reflog?

非常感谢,

朱利安

0 投票
1 回答
366 浏览

git - git reflog 中的第二列是什么?

我只是做了一个简单的git reflog,这是我得到的前几行:

我试图了解每列代表什么。从这篇文章这个问题中我已经了解到:

  • Column1 显然是提交,
  • Column2 是我感到困惑的地方。我理解HEAD@{0}to 的HEAD@{7}概念。不要得到括号中的部分!. 代表什么(yy, alphabets, hotFix)
  • Column3 是操作,即结帐/拉出消息。

此外,我不确定为什么会有多行相同的提交?是不是因为不同的分支都指向同一个提交并且它们之间没有代码更改?

0 投票
1 回答
1887 浏览

git - core.logAllRefUpdates 设置为 true 的裸存储库中的 git reflog 不返回任何内容

我已经使用 镜像了一个 git 存储库git clone --mirror,然后设置git config core.logAllRefUpdates true,然后使用git fetch -p.

在托管 repo 的服务器上,如果我git reflogrepository.git目录中运行,我不会得到任何输出。

core.logAllRefUpdatesrefs 所在状态的文档$GIT_DIR/logs/<ref>,但我没有日志目录。我需要手动创建吗?

core.logAllRefUpdates

启用 reflog。通过附加新旧 SHA-1、日期/时间和更新原因,将对 ref 的更新记录到文件“$GIT_DIR/logs/”中,但仅当文件存在时。如果此配置变量设置为 true,则会自动为分支头(即 refs/heads/ 下)、远程 refs(即 refs/remotes/ 下)、注释 refs(即 refs 下)创建缺少的“$GIT_DIR/logs/”文件/notes/) 和符号 ref HEAD。如果它设置为 always,那么会自动为 refs/ 下的任何 ref 创建一个缺失的 reflog。

0 投票
1 回答
13895 浏览

git - GIT - 删除旧的 reflog 条目

在根据我们的最新需求对存储库进行了大量重新定位之后,我们的 reflog 充满了提交和孤立分支。我们达到了重组的最终状态。

虽然分支和提交留下了大量二进制数据,但存储库增长了其原始大小的数倍,我们决定清除所有旧的 reflog 条目和数据。

我正在研究手册,但尝试git-reflog expire并没有变得更聪明

这是日志的示例(已缩短)

正如您在主分支下方看到的那样,旧的提交/分支在变基之前说明了存储库。

我们希望清除 reflog 以使存储库看起来像

为了减少存储库使用的磁盘空间。

我怎样才能做到这一点?


编辑(2019-03-02 12:20)

请不要提及删除并重新克隆存储库。这不是我要找的。


编辑(2019-03-02 12:30)

到目前为止我尝试过的但没有奏效的

什么都没有发生,所以我试图变得聪明并调用垃圾收集器

但假的。

0 投票
0 回答
54 浏览

git - 即将对 git 存储库进行可怕的更改 - 如何确保我可以恢复到当前状态?

我需要在我的 git 存储库上执行主要操作。我还不确定我会成功,我可能需要使用我还不太熟悉的方法。我希望使用大量的合并、挑选、--reset变基,并希望最终处于更清洁的状态。完成后,我会将其推向上游。

由于我还不确定最佳策略,我预计其中一些操作会导致死胡同。

无论我最终做什么,我都想确保我始终可以恢复所有分支的当前状态,包括可能已删除的本地分支和提交。

我以前曾经git reflog撤消过早的合并等,但我不确定这是否可以帮助我处理已删除的分支。大多数使用的例子reflog似乎都适用于特定的分支。

可以reflog帮助我,如果可以,我需要记住什么才能恢复?有没有更好的办法?

0 投票
1 回答
180 浏览

git - 在最后一次 `pull` 或 `merge` 之前引用 HEAD 的状态

我发现我经常这样做。

  • 运行git pullgit pull --rebase
  • 查看标准输出以查看更改

    /li>
  • 复制“n”将此版本范围粘贴到

    /li>

我想知道是否有一种方法可以指定“HEAD上次拉取或合并之前的状态”,这样我就可以简单地始终运行相同的命令

简单地总是使用HEAD@{1}is close 并且可能适用于git pull,但不适用于git pull --rebase,因为这会在 reflog 中添加多个条目:

0 投票
1 回答
742 浏览

git - git 可以在拉坏后恢复未跟踪的文件吗?

我有一位艺术家在 git 中为一个班级项目工作。他在工作目录中有一个未被跟踪的资产。在提交文件之前,他执行了一次请求以获取最新的更改。上层文件夹必须已重命名,并且在拉取期间,他正在工作的文件夹已被删除,并且所有跟踪的文件都已移至新文件夹。所有未跟踪的文件似乎都被删除了。有没有办法恢复未跟踪的文件或使用 git reflog 和 git reset 恢复存储库?

0 投票
2 回答
1000 浏览

git - Git 存储库因提交中断而损坏

git commit我用Ctrl+中断了我的本地 git 存储库C(两次提交)。我该如何解决?

输出git stash

输出git fsck --lost-found

输出git reflog

也无法写入.git/refs/heads/Multi-Threading