git 从“工作树”中查找提交

2024-04-01

假设有人克隆了一个 git 存储库并删除了 .git 文件夹。有没有办法恢复他们所在的提交?这不是重复的恢复 .git 文件夹的最佳方法 https://stackoverflow.com/q/24775326/1248889 or 删除的.git可以恢复吗? https://stackoverflow.com/q/6246907/1248889, 因为years自从这次事件以来已经过去了。我现在正在尝试将其恢复到 git 下以将其更新到新版本。然而,那些年可能已经发生了变化,我需要合并/重新调整到新版本。

我目前的想法是:

  1. 使用以下命令将当前存储库从 github 克隆到另一个文件夹中git clone --bare
  2. 使用以下命令将存储库标记为非裸机git config --local --bool core.bare false
  3. 将神秘版本的文件复制到此文件夹中
  4. 将工作树与当前提交哈希的差异保存在某处
  5. 将 HEAD 更新为 HEAD^ (不太确定如何在不修改工作树的情况下执行此步骤。可能切换回裸露,签出 HEAD^ 切换回非裸露?我也读过有关 git symbolic-ref 管道的内容,但不'不知道怎么用)
  6. 重复步骤 4-5 直到根
  7. 选择尺寸最小的差异。这应该是该代码所偏离的提交的一个很好的近似值。在该提交周围搜索确切的分歧点。

有没有更好的办法?有一个 semver,但它没有更新太多,所以它只将范围缩小到大约一两年。我不相信存储库发生了太大变化,所以我猜有完全匹配的文件。也许我可以使用该信息来缩小可能的提交范围?谢谢!


我会做:

  1. 将实际源提交到某个分支(例如_tmp_),这样索引就干净了

  2. 迭代所有可能的提交(例如git rev-list master)并检查差异

    git rev-list master | while read rev; do git diff "$rev" "_tmp" && echo "it is $rev!" done

    When _tmp_包含存储库中未跟踪的文件,git diff永远不会成功,你必须分析差异(例如,最低的wc -l wins).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git 从“工作树”中查找提交 的相关文章

  • 如何在 Visual Studio 2013 中隐藏未提交的更改

    需要一些帮助 了解如何使用 Visual Studio 2013 搁置 Git 存储库中未提交的更改 我来自 PHPStorm 您可以在一个分支上搁置未提交的更改 切换到另一个分支并取消搁置 但是 我无法找到 了解如何在 Visual St
  • 使用两个帐户推送到 Git

    我跟着这个tuotrial http code tutsplus com tutorials how to work with github and multiple accounts net 22574关于如何在同一台计算机上拥有两个单独
  • php run git 收到“ssh 权限被拒绝”

    我正在尝试从浏览器中运行 git pull php 脚本 但我得到了 sh 连接到主机 git assembla com 端口 22 权限被拒绝 我的 PHP 脚本
  • git-svn SVN 作者文件的相对路径?

    我已经使用 git svn 从工作中克隆了一个 SVN 存储库 在最初的克隆过程中 我提供了一个 SVN 作者文件 当我进行初始克隆时 git 设置了authorsfile作为绝对路径 但是 我在工作机器和笔记本电脑上保留了这个 git 存
  • Git - 显示远程分支的远程名称

    是否有一个 Git 命令可以显示远程分支的远程名称 目前 我坚持使用 shell utils 从远程分支引用中提取远程名称 例如 echo remote name branch name sed r s 1 remote name 有时出于
  • 签出现有的远程分支

    我见过不同的方法来检查现有的远程分支 假设我的朋友推送了新分支 bigbug 并且我想签出并将我的本地工作副本切换到该分支 我有以下选项 1 git checkout b bigbug origin bigbug 2 git checkou
  • .gitignore 文件夹内容[重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上忽略 Git 存储库中的目录 https stackoverflow com questions 343646 ignoring directories in git repos
  • 来自 eclipse 的部分 git 提交 (egit)

    假设我有一个有 2 个更改的文件 如何使用 egit 只提交其中之一 命令行版本可以在以下位置找到this https stackoverflow com questions 1085162 commit only part of a fi
  • 如何使用 libgit2 创建空提交?

    我一直在寻找libgit2 C API 参考 https libgit2 org libgit2 但我不知道如何模仿git commit allow empty libgit2 是否有内置方法来创建空提交 如果没有 git 如何在底层创建一
  • web2py git 集成 - localhost 和 pythonanywhere

    我完全不知道如何将 Github 集成到 web2py 中 我在 USB 上安装了 web2py任何地方的Python http www pythonanywhere com web2py概述文档chapter3http web2py co
  • Python 无法在 git bash 命令行中工作

    Python 不会在 git bash Windows 中运行 当我在命令行中输入 python 时 它会将我带到一个空行 而不会像在 Powershell 中一样显示它已输入 python 2 7 10 它没有给我错误消息 但 pytho
  • git 命令显示所有(轻量级)标签创建日期

    是否有一个衬垫可以向我显示所有 git 轻量级标签的创建日期 就像是 git show tags format date 我在这个发现link http osdir com ml git 2009 05 msg01404 html适合我需求
  • 在 GitHub 上执行拉取请求时避免不需要的合并提交和其他提交

    我在 Github 上分叉了一个项目 令远程上游为upstream我的远程存储库是origin 我当地的master分支设置为跟踪远程master分支 然后我在本地添加了一些东西master 时不时与上游汇合 直到今天我想发出pull re
  • git Branch -d :致命 - 无法查找 HEAD 的提交对象

    假设我在一个裸存储库 远程 中 如果我尝试使用以下命令删除分支git branch d
  • gitlab 上的权限被拒绝(公钥)

    我的问题是我无法从 GitLab 推送或获取 不过 我可以克隆 通过 HTTP 或通过 SSH 当我尝试推送时出现此错误 权限被拒绝 公钥 致命 无法从远程存储库读取 从我看过的所有线程中 这是我所做的 在我的计算机上设置 SSH 密钥并将
  • git stash 删除最旧的存储(比如最旧的 5 个存储)

    如何在一个语句中删除最旧的存储 例如最旧的 5 个存储 而不是执行以下操作 git stash drop stash 3 git stash drop stash 4 git stash drop stash 5 git stash dro
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • git Blame:合并后正确的作者

    GIT 合并引入了新的提交 这会导致 git Blame 问题 合并的行似乎是由进行合并的开发人员提交的 我可以理解这种情况冲突的变化 因为他解决了冲突 但是有没有办法让非冲突线路不发生这种情况呢 一些 git Blame 的选择 如果没有

随机推荐

  • 在 Emacs 中如何重新映射键?

    我正在寻找一种方法 可以在 emacs 窗口中切换控制键和大写锁定键 但是当我转到任何其他程序 例如 Firefox 时 我希望能够在新窗口中使用普通控制按钮 选项卡等 附加信息 我正在使用 Ubuntu 但所有系统的答案都很好 因为其他人
  • iOS:保存双重选择器的设置(数据持久性)

    所以我有一个双重选择器 用户可以将每个轮子设置为他们想要的 然后按下一个按钮来显示他们的选择 简单干净 但我想存储这些数据以供以后使用 以便在关闭应用程序并再次重新打开它后它不会消失 现在 我知道如何使用 datePicker 来做到这一点
  • 如何在 CmdletBinding() 脚本中定义函数?

    我正在编写一个脚本 我想使用 PowerShell 的 CmdletBinding 有没有办法在脚本中定义函数 当我尝试时 PowerShell 抱怨 表达式或语句中出现意外的 token 函数 这是我正在尝试做的事情的一个简化示例 Cmd
  • 如何让 GDB 打印 64 位变量?

    我正在使用 GDB 来调试用以下代码组装的代码 nasm felf64 Fdwarf 当我想检查标签符号的值时 比如说 var h dq 1 using print var h GDB 假设该值是 32 位并且只给我最低的 4 个字节 x
  • 32 位操作系统上的 JVM 堆大小

    我使用的是 32 位 win 7 并使用 Eclipse 还有 4GB 内存 我想为我的 java 应用程序分配大约 3 GB 的最大堆大小 但我可以通过 VM 参数分配最大 1 5GB Xmx1056m 我应该怎么办 如果我安装64位wi
  • ng --version 显示 Angular 不支持当前版本的 Node (16.8.0)

    我刚刚安装了最新版本节点 16 8 using nvm and 角度 cli 12 2 但当我跑步时ng version 它显示以下内容 警告 Angular 不支持当前版本的 Node 16 8 0 我尝试降级节点并安装节点 14 15
  • 提交带有请求的表单未通过

    我真的尝试过自己解决这个问题 但我是 pyhon 的新手 所以我无法做到这一点 我一直在尝试为我使用的网站制作一个机器人 并且我正在尝试使用请求库来做到这一点 到目前为止 我的目标非常简单 登录并回复主题 我已经能够通过网络表单登录 但在通
  • 如何使用 Terraform 创建不具有代入角色策略的 AWS IAM 角色?

    使用 AWS MediaConvert 时 说明提供了示例 IAM 政策 https docs aws amazon com mediaconvert latest ug example inline policy kms decrypt
  • 如何最大化 UWP 窗口(非全屏)

    如何使用 C 最大化 UWP 项目中的窗口 不是全屏 我尝试使用窗口边界作为参数的 TryResizeView 方法 但没有任何反应 Thanks 目前在 UWP 中这是不可能的 所以 我无法让你最大化 但我可以让你非常接近 var av
  • Ansible、瞻博网络 CLI 命令。超时错误?

    我正在尝试将我用 Python 编写的自动化脚本传输到 ansible 公司请求 但我以前从未使用过 ansible 我已经尝试过 wait for 但我也没有让它发挥作用 在脚本中 我可以设置 dev timeout None 或我需要的
  • Bower/bower-asset 在 yii2 等 php 应用程序中扮演什么角色

    最近我部署了一些项目 例如trntv yii2 starter kit https github com trntv yii2 starter kit 等等 但所有应用程序都在 vendor bower 而不是 vendor bower b
  • 使用 XSLT 在字符串/子字符串中的每个实例之后进行选择

    我正在尝试编写一个 XSLT 样式表 该样式表将处理 Dublin Core XML 编目记录并为每本书创建芝加哥 APA 和 MLA 版本的引文 除了 APA 作者的问题之外 我一切都进展顺利 APA 的作者风格需要作者的姓氏 完成 逗号
  • 最佳实践:显示通过多行文本框输入的文本

    我有一个多行文本框 当用户简单地键入时 文本框会包裹文本 并将其保存为单行 用户也可能输入换行符 例如在输入 项目符号 列表时 例如 Here are some suggestions fix this remove that and an
  • 将数据传递到 Rails 部分

    编辑 解决方案完美运行 dom id http api rubyonrails org classes ActionController RecordIdentifier html 我正在尝试将数据传递给部分数据并使用它来更改用户的角色 目
  • 如何使用支持库修复缩放的 FloatingActionButton 上的阴影 23

    我在使用支持库 23 的 KitKat 设备上有一个 FAB 我正在缩放按钮以获得过渡效果 通过将其包含在调整大小的视图中 这基本上与阴影不同 阴影以一种奇怪的形式出现 参见屏幕截图中缩放的红色按钮 蓝色按钮是全尺寸 实际发生的情况是 阴影
  • C# 验证 CRL 列表中的证书

    如何以编程方式检查某个证书是否已从其 CA CRL 列表中撤销 我正在这样做 X509Chain ch new X509Chain ch ChainPolicy RevocationMode X509RevocationMode Onlin
  • SoapFaultMappingExceptionResolver 永远不会遇到常规 java 异常

    谁能告诉我为什么我无法使用解析器捕获常规 Java 异常 以便我可以在响应发回之前对其进行转换 它永远不会遇到断点 如果不可能 我该怎么办 SoapFaultMappingExceptionResolver public class Lis
  • Conda 环境中出现意外的 Python 路径

    在 Conda 环境中 base在这里 我对 Python 路径中的目录顺序感到惊讶 python c import sys print sys path export projects III data wcmp bioinformati
  • 如何在 Java 中刷新 GUI?

    我有一个与 Java 相关的一般性问题 我正在编写一个具有 GUI 菜单的应用程序 我正在尝试根据单选按钮的选择来更改 GUI 菜单的一部分 我需要 重绘整个窗口或仅更新该部分 setVisible true 如果我只使用上面 1 中的语句
  • git 从“工作树”中查找提交

    假设有人克隆了一个 git 存储库并删除了 git 文件夹 有没有办法恢复他们所在的提交 这不是重复的恢复 git 文件夹的最佳方法 https stackoverflow com q 24775326 1248889 or 删除的 git