问题标签 [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 - 恢复 - git reset --hard HEAD^
不幸的是,我曾多次git reset --hard HEAD^
在多个文件中丢失了大量代码。有没有办法恢复这些提交,或者在这种情况下转发 HEAD 之前的位置,这样我就可以提出我丢失的那些行?
git - 从远程存储库获取所需提交的 sha1
使用git reflog
,用户只能访问他的本地 reflog 信息吗?
如何从远程存储库中查看所需提交的 sha1?
git - git 引用日志。这是适当的用途吗?
目前这是假设性的,但这是我想付诸实践的工作流程。
我有一个模板,我从它开始我的所有 Web 项目。我目前使用 github 来存储主模板,并且每次构建项目时都简单地克隆。
问题是随着我做越来越多的项目,我有一些在模板中很有用的功能,但是将它们放入我当前的工作流程中是很棘手的。
我的建议是在每个项目开始时从 github 中提取模板,并沿着本地分支构建项目。当我遇到我认为在主模板中有用的东西时,我切换到主分支,在那里实施更改,提交到 github,然后使用 reflog 将这些更改带到当前的本地项目状态。
这有什么意义吗?我(很可能)完全错过了 reflog 的要点吗?
非常感谢
git - 如何在现有的裸存储库中创建 reflogs 信息
您可能已经知道,默认情况下,git 不会为新的裸存储库启用 reflog 更新。问题是,我有一个很长的历史存储库,但它是在我设置标志“logAllRefUpdates”之前创建的,现在我希望该信息可以让另一个应用程序工作。
如何通过对现有存储库进行最小更改来实现这一点。一个非常简单的解决方案是推送一个我不想的新提交(!):-)
git - 查询 git reflog 以获取对特定文件的所有提交
是否可以检查 git reflog 是否有对特定文件的所有提交。
我对文件 foo.txt 进行了提交,现在它不再显示在 git 历史记录中
我想搜索 reflog 以找到对该文件的所有提交,以便找到我的“丢失”提交。
git - git reflog expire 和 git fsck --unreachable
免责声明:这个问题纯粹是信息性的,并不代表我遇到的实际问题。我只是想弄清楚一些事情(因为我喜欢弄清楚事情,我知道你也这样做)。
所以我在玩 git,试图让修改后的提交过期。我的 reflog 看起来像这样:
这意味着我做了两次提交(da8534a
和5a1e68a
),然后是ff576c1
我修改的第三次提交4eea1cd
。
不出所料,我的git log
样子是这样的:
根据我(尽管我)对提交到期的了解,有一天(很可能,默认情况下在 30 天内)git gc
应该收集ff576c1
. 现在我不想等待 30 天才能看到这种情况发生,所以我开始运行一些命令,首先:
正如预期的那样,这给了我:
所有人都确信我将结束那个可怜的孤独ff576c1
提交,然后我运行git reflog expire
:
那个时候,给了我:
起初我虽然 myHEAD
没有引用master
,但正如您在git log
我之前给出的输出中看到的那样,它确实如此。此外,cat .git/HEAD
确认(大喊ref: refs/heads/master
)。无论如何,即使这很愚蠢,因为4eea1cd
是我master
分支的负责人。
所以我在这里,很困惑这两个命令不会给我相同的提交,并且想知道地狱怎么4eea1cd
可能无法访问,因为它是我master
分支的实际尖端。
知道发生了什么吗?
编辑:我只是注意到如果我将--rewrite
选项添加到git reflog expire
,就像这样:
然后我只得到修改后的提交:
我还是不明白,因为根据git help reflog
:
在我的情况下这没有意义。好吧,至少我不明白,因为显然它确实改变了一些东西。
git - 哪个提交是精心挑选的?
你如何找出樱桃挑选操作中使用了哪个提交?git reflog 似乎只在cherry-pick 合并并提交后才显示生成的提交 Sha-1。我们需要在此之前找到原始提交。
为什么?这是因为我们错误地挑选了一个大的但不正确的提交到不同的分支。但是直到修改它以便它编译并在它之后添加其他提交之后才意识到它。
这里的目标是比较原始的樱桃选择,并将这些差异用作补丁或手动对正确的樱桃选择进行相同的更改。
git - 如何将一组修改后的提交(存储在 reflog 中)变成真正的提交
我正在进行重构,每次取得任何体面的进展时都会不断地进行修改。它进行得非常好,我意识到能够向人们展示我是如何处理如此巨大的重构(很多微小的步骤,只是轻推代码,每个点都有一个绿色测试套件)会很好。
提交都在我的reflog中。有没有办法将每个修改后的提交变成自己的真实提交(对不起,不知道术语),以便用户可以看到每个步骤,而不仅仅是第 81 和 57 行的聚合步骤?我不需要提交或任何东西的唯一消息,只是它们被记录在历史记录中。
这仍然在我的本地仓库中。
git - git reflog 未显示分支更改
在另一个问题中,一位用户发布了以下 reflog:
在HEAD@{25}
中,用户切换到测试分支。但是,在 中HEAD@{16}
,用户从开发转移到提交,而没有事先从测试转移到开发。
如何在不反映在 reflog 中的情况下更改分支?我不相信这个用户特别老练,所以我怀疑使用了任何深奥的技巧。
git - 有没有办法让 git-reflog 在每个条目旁边显示一个日期?
默认情况下, git-reflog 命令不会在每个条目旁边显示日期,这让我觉得这是一个奇怪的疏忽;我认为这会很有帮助。
是否有任何命令行选项或其他调整可用于显示每个 reflog 条目何时添加?手册页没有发布...