问题标签 [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 - 为已删除的引用保留 reflog
在我的 git 存储库的本地克隆中,当删除(或重命名)引用时,附加到旧名称的 reflog 将被删除。
我找不到说明“保留已删除引用的日志”的选项。
问题
有没有办法为已删除的引用保留 reflog 文件?
清理和 gc 仍然可以遵循 reflog 条目、无法访问的对象等的参数......
git - 确定是什么阻止了从 git 中删除提交
如何确定是什么阻止了通过以下命令从 git 中删除提交?
细节
我想XYZ
从我的克隆中完全删除一个提交(例如,使用 commit hash )。如果以上不是正确的命令(或者我的以下命令/推论中的任何一个不正确),请告诉我。
我知道XYZ
在运行上述 prune 之后它仍然在我的克隆中,因为以下返回一个日志列表:
我知道这XYZ
不在任何分支中,因为以下内容不输出任何内容:
我认为这XYZ
不在任何藏匿处,因为以下内容不输出任何内容:
XYZ
,然而,实际上是在一个藏匿处,但一个 git 错误阻止了藏匿处被列出。
git - 是否有一种规范的方法可以追溯地将 git repo 拆分为公共和私有变体?
我有一个 git 存储库,其中包含一些可能硬编码或正式硬编码的敏感数据的文件,这些数据现在位于 git 历史记录中的某些位置。
为了使项目公开可用,以便具有相似兴趣的程序员可以从中受益并回馈更改,我想分叉它以清理有问题的文件。
我考虑的程序如下:
- Shallow/Shared 将 repo 本地克隆到新的本地位置,此文件夹将成为公共变体。后续步骤在新的 repo 中。
- 将master分支到一个分支
public-master
- 删除所有其他分支引用。
- 消毒
public-master
- 壁球
public-master
git reflog expire --expire-unreachable=now --all && git gc --prune=all --agressive
删除所有无法访问的引用,现在是任何不在公共分支中的 objgit push
将公共主服务器添加回上游到私有存储库中。- 将 origin 远程设置为公共 repo url,分支到
master
. 推到原点。
这足以清理我的回购,还是可以在此之后恢复敏感数据。有没有更明智和通用的方法来解决这个问题?有没有多余的步骤?
例如,我可以在一个存储库中完成所有这些操作,还是 git-packs 的性质意味着我可能仍会推送obj
包含敏感信息的内容?
git - 如何使用过滤器分支恢复从 git 中删除并推送到远程的文件?
我最近使用 git filter 分支从我的存储库中清除了几个文件。这些是我遵循的说明:https ://help.github.com/articles/removing-sensitive-data-from-a-repository/ 。之后,我重新调整了我的开发分支,以便该分支上的新提交不会重新引入任何历史记录。但是在这个过程中,我忘记了我已经对这个分支上的一个文件进行了更改,我在过滤分支上删除了该文件。因此,当我重新设置 dev 分支时,该文件消失了。这个文件可以恢复吗?
到目前为止,我已经尝试做一个 git reflog 来查看我可以返回到哪个提交会有这个文件。当我使用旧的提交哈希使用 git reset --hard 时,我收到此错误:
我相信这个错误可能是因为我执行了过滤器分支并将过滤后的历史记录强制推送回远程。清理说明也有一个
这也解释了为什么找不到该特定提交。在这种情况下我能做些什么来恢复这个文件吗?
编辑:自从变基以来,我对 dev 分支进行了更多更改,因此找到一个不涉及放弃所有这些工作的选项将非常有帮助。
git - 恢复合并冲突的初始列表
当 git 在合并时遇到冲突时,会显示一个列表,其中每个条目都以开头CONFLICT
并包含有关冲突原因的信息,例如(renamed/deleted)
.
我正在寻找一种在重新启动机器或仅关闭 CLI 后检索此确切列表的方法。
当然有:
但是,这不包含有关冲突原因的信息,因此找到 50 多个文件比重置 git 和重做合并更费力。
这可以实现,例如使用reflog
?
编辑:请注意,这个问题专门指所描述的列表,我不是要求其他解决方案来解决合并冲突。
git - 为什么 git commit 在这种情况下会丢失?
我的同事做了一系列粗心的拉/推操作。他最终陷入了他的本地提交丢失的情况
我使用git reflog
. 但我不明白为什么他的操作会导致这种情况。有人可以点亮一些灯吗?
请参阅git reflog
下面的输出和评论:
git - 将输出推入管道时如何获取完整的 git reflog 输出
如何在git reflog
不复制+粘贴的情况下获得其他程序的输出。当我管道输出时,分支名称突然消失:
我只想能够grep
在输出中使用特定的分支名称,这不起作用,因为当我尝试这样做时 git 会禁用分支名称。
git - git log --reflog vs git reflog
在玩过rm
etc 等之后,我git reflog
不再显示过去的提交。
但是,git log --reflog
仍然能够显示出来。
git log --reflog
如果不依赖,如何显示悬空提交git reflog
?
git - 为什么当我输入命令“git reflog”时 Git Bash 什么也不显示
当我输入git reflog
git bash 时,它什么也没显示。当我show reflog
在 TortoiseGit 的上下文菜单上选择时,它说
“加载 reflog 时出错。libgit2 返回:无法解析 OID,包含无效字符”。
git的其他功能很好。我已经在 Google 和 Bing 中搜索了几个小时的这个问题的解决方案。但是还是想不通。我接下来应该尝试什么来解决问题或找到原因?
git - 修复一个混乱的 rebase 合并提交
我记得做了一些事情,比如提交我的更改(在我的功能分支上)并与远程分支(不是主分支)合并。然后为了确保我的提交位于合并提交之上,我重新设置了最后两个提交并更改了顺序。我推动了这些变化,其他人也在此基础上做出了承诺。
现在,发生的事情是一些合并提交是用不同的提交 ID 挑选的,现在当我创建一个拉取请求时,它显示为我的。我可以理解这是因为我的分支中的相同更改来自不同的提交 ID,因此它显示为其他人创作并且我已提交,但更改未显示在文件选项卡中,因为更改已经存在。
这是我的参考日志
并且添加了一些提交,但在此之后其他人和我以及这个分支被其他几个人使用。我不知道如何解决这个问题。
我能想到的一个想法是还原所有这些提交,但这将创建另外 4 个提交。
有什么办法可以解决这个问题吗?