问题标签 [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.
git - gc prune 和 git reflog expire 的范围,以及相关配置
我们正在使用一次性集成分支,这些分支被推送,然后被删除并重新创建。但是,丢弃的分支留下了悬空的提交和树,我可以使用以下命令查看它们:git fsck --unreachable --no-reflogs
我可以清理它们
或类似的东西,但我想先了解这些命令的范围和相关配置。
所以具体问题:
- 所以新的克隆是精简的,我如何
gc
修剪和清除 reflog,不仅在本地,而且在我们托管在 GitHub 上的远程存储库上? - 我可以为 GitHub 托管存储库设置相关的 git 配置项(例如
gc.pruneexpire
、gc.reflogexpire
、 )吗?gc.reflogexpireunreachable
PS:有关有用的上下文,请参见此处:列出和删除没有分支下的 Git 提交(悬空?)
git - 有没有办法让 git-reflog 在每个条目旁边显示一个日期?
默认情况下, git-reflog 命令不会在每个条目旁边显示日期,这让我觉得这是一个奇怪的疏忽;我认为这会很有帮助。
是否有任何命令行选项或其他调整可用于显示每个 reflog 条目何时添加?手册页没有发布...
git - git reflog 和 log 有什么区别?
手册页说日志显示提交日志,而 reflog 管理 reflog 信息。reflog 信息到底是什么,日志没有什么?日志似乎更详细。
git - 列出压缩的提交
在我做交互式变基之后:git rebase -i HEAD~20
我得到一个新的提交,例如 ea1234ea
我知道历史记录在 reflog 中,但是如何获取在此提交中压缩的提交列表,包括它们的标识符(sha)?
git show ea1234ea
将显示一个提交消息,其中列出了被压扁的消息,但没有标识符。
git - 悬空提交不在 reflog 中,不会被 git gc 清除
我得到了一个不在 reflog 中的悬空提交(或者我用错了),并且不会随git gc
. 这就是我的意思:
也没有什么可以为我解释它:
我看到提交是一个还原,并且历史可以追溯到早期:
但是为什么这个提交不会消失呢?
我很想知道这一点,因为它对我来说毫无意义:D
git - 如何恢复添加到 git 但被结帐覆盖的文件
需要一些帮助!
- 我使用“git add”添加了一些文件
- 我想签出其他文件,但不小心运行了“git checkout -f”
我确实知道使用 reflog 等可以恢复这些更改,但我不知道如何!我知道有可能获得差异。我真的需要那些改变。
有任何想法吗??
git - 是否可以查看提交是否已从远程分支中删除?
我问这个问题的原因是我怀疑有时我工作的地方有时提交似乎只是无缘无故地从远程分支“消失”。我在这里的另一篇文章中看到,确实可以使用:
我确实讨厌感觉偏执,但如果我能检查一下,我会放心。我在某处读到了一个命令:
看起来这个手册页说这个命令也可以用来从日志中删除条目,这很糟糕。无论如何我可以检查一下并放松心情吗?
macos - Git:删除了当前分支并丢失了 reflog
我之前遇到了一个不寻常的 git 问题,后来我已经解决了,但我仍然很好奇它为什么会发生。
当我不小心删除了我当前正在处理的分支时,就会出现问题。通常 git 不允许这样做,但由于 OSX 不区分大小写,我陷入了一种情况,我认为我有两个分支,一个名为feature/ONE
,另一个名为feature/one
. 认为这是两个独立的分支(来自主要是 linux/区分大小写的背景)并且我正在研究 feature/ONE 我试图删除 feature/one 使用git branch -D
.
我很快注意到我做了什么,试图从 中找回我丢失的工作git reflog
,这给了我错误fatal: bad default revision 'HEAD'
。我尝试使用 恢复正常状态git checkout -f develop
,这很有效。然而,不幸的是,当我看到它时git reflog
,它只有一个条目说明checkout: moving from feature/ONE to develop
。日志中没有出现以前的操作。
我已经编译了一些步骤来复制这种场景(大概这仅在不区分大小写的文件系统上才有可能):
我已经能够通过检查找到我丢失的提交git-fsck
,但我的问题是:
为什么这一系列动作会破坏 reflog?即使分支被删除,reflog 不应该仍然知道 HEAD ref 的历史记录吗?
git - reflog 过期和 gc prune 后推送到原点
我在本地仓库中删除了一些无法访问和悬空的提交,使用
但我发现删除的提交仍然可以在源(准确地说是 GitHub)上使用。
我试过git push --force
了,但它没有将更改同步到原点。如何强制将更改同步到源(也从远程删除无法访问/悬空的提交)?
这是一个没有答案的类似问题:
git - Egit:Reflog 中的消息与 Git Bash 不同
我注意到 EGit 记录休息操作的 reflog 的方式与 Git Bash 记录它的方式之间存在差异。
HEAD@{1} 和 HEAD@{5} 由 EGIT 录制,而 HEAD{3} 由 Git Bash 录制。
此外,他们记录分支名称更改的方式似乎有所不同:
第一行来自 Git Bash,最下面的行来自 EGit。此外,EGit 对 HEAD reflog 进行了相同的更改,而 Git Bash 什么也不做。
最大的问题是 Git Bash 没有显示任何超出 40 0 的行,所以在 Git Bash 中我看不到日志。
我想我可以编写一些重写日志的脚本,但我想知道是否有一些设置或版本有误。
我正在使用 Egit 3.4.1 和 Git Bash 1.8.5.2.msysgit.0