Git 更改丢失 - 为什么?

2024-05-19

我们的开发团队正在使用 git,最近我们至少两次丢失了文件更改。我们正在使用私人 Github 存储库。

在当前情况下,我们可以返回 Github 上的日志并查看我对文件所做的一些更新。后来,另一位团队成员更改了文件的不同部分,它似乎破坏了我的更改。我在当地仍然有它们。

还有其他人经历过这个吗?有什么原因或解决办法吗?

I don't think任何人都在做任何变基或任何奇特的事情——只是拉和推。


我想补充几句话。我最近注意到 git 中非常奇怪的行为。因此我的团队遇到了很大的问题。 我不知道这是怎么发生的,但我的仓库中的历史似乎不一致。

小插图:

提交 XXXXXXXXX:

“bar”行已添加到文件 foo 中。

...工作正在进行中...

稍后进行大量提交(假设大约 100 次):

该文件中不再存在“bar”行!

调查:

1.我检查了文件的历史记录:

git 日志 foo 和 gitk foo

我什至使用外部工具(gvimdiff)比较了每次提交的连续 blob。 有趣的是,我发现了两个提交(我们称它们为 YYY 和 ZZZ)。 来自提交 YYY 的文件 foo 的 Blob 包含“bar”,但来自 ZZZ 的 Blob 则不包含。
当我使用 gitk(和 gitweb)检查这些提交的提交差异时,我注意到 ZZZ 中没有删除行“bar”的操作。 有没有可能中间有一些承诺,然后就凭空消失了?
或者也许提交 ZZZ 刚刚删除了我的行并且嵌入在 git(或 gitk)中的 diff 工具已损坏?

2.我搜索了可以使用“git log -S”删除此行的提交,例如:

git log -S'bar' -- foo

事实证明,这一行从未被删除。事实上它被添加了两次。第一次将其引入项目时,第二次将其作为紧急错误修复再次添加。

我真的很喜欢使用 git,甚至说服了几个朋友使用它,但如果这种魔力继续发生,我将不得不开始寻找替代方案。

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

Git 更改丢失 - 为什么? 的相关文章

  • 如何在Git中手动合并所有文件?

    我想合并所有文件manually有了 meld 或任何其他 diff 工具 我如何使用 Git 来做到这一点 当我跑步时git mergetool它说no files need merging 所以我想只有当我有冲突时我才能做到这一点 有更
  • 如何 git checkout 提交并将子模块更新到该提交?

    我正在克隆一个带有子模块的项目并恢复到大约一年前的提交 git clone recursive branch 5 6 https codereview qt project org pyside pyside setup cd pyside
  • Git-svn:批量删除孤立的远程分支

    我正在处理的 SVN 项目 通过 git svn 有经常创建的分支 然后与主干重新集成 然后删除 现在项目大约有10个分支没有被删除 但是在git中 gitbranch r显示大约有50个 我可以一次删除这些 检查它们是否仍然存在于 svn
  • 无法快速删除 Git 中的许多文件

    我删除了 Git 分支中的 777 个文件新功能 by rm example 我愿意承诺 Git 要求我手动删除每个已删除的文件 git rm file 对于所有名称不相似的 777 个文件 编写上述命令将花费大量时间 如何删除我的 Git
  • git commit -m 与 git commit -am

    看起来很容易 但我就是不明白 我在我的应用程序的根目录中 这是我的工作流程 git add git commit m added a new feature some files changed git push heroku master
  • 未签出...捆绑安装无法修复帮助!

    https github com intridea omniauth git at master is not checked out Please run bundle install Bundler GitError 那我该怎么办 捆绑
  • Mac 到 EC2 - 源代码控制三角问题 - git?同步?啥?

    我有一个日常 EC2 实例 事实上 请注意那些更改IP每次重新启动它们时 都会出现另一个问题 实例上有一个文件夹 我在文件夹 mysql express 等 中有一个简单的 比如说 节点项目 比方说 这是一个网站 那么在我的 Mac 上进行
  • 无法在 git 上获取 Http 工作

    我在拇指驱动器上使用 gitbash 作为 git 我的防火墙阻止了我 并且想设置我的 git 以进行 http 访问 我使用 github 并且已经看到了有关如何执行此操作的各种信息 但我还不够了解 无法让它为我自己工作 我在 php i
  • 我应该如何将更改从一个提交转移到另一个提交?

    我在同一个分支上有两个提交 一个接一个 我在第一次提交中添加了对文件 A 的更改 然后对其他文件进行了一些更改 然后进行了另一次提交 现在我希望对文件 A 的更改是在第二次提交而不是第一次提交 最优雅的方式是什么 我知道这是一个老问题 但我
  • 如何使用 Github API 与企业进行搜索

    我正在尝试搜索存储库 但我似乎无法通过 github 企业版找到答案 我已尝试以下操作但没有结果 有什么建议么 curl i http my domain com api v3 repositories If Modified Since
  • 是否可以使用“最小”算法进行交互式添加?

    当从快照计算变更集时 Git 并不总是正确选择块边界 git diff has a diff algorithm允许在这方面进行一些调整的选项 git diff minimal有时会给出比git diff alone 有没有办法获得相同的优
  • 如何修复 Centos 上的 Git Segmentation 错误

    我收到分段错误错误 无法在服务器上提取代码 Centos 7 这就是我遇到错误的方法 通过使用以下命令来验证我的服务器是否使用 bitbucket 进行身份验证 ssh T email protected cdn cgi l email p
  • Git 查找第一个非本地提交

    有关的 列出尚未推送到源的 Git 提交 https stackoverflow com questions 3080509 list git commits not pushed to the origin yet git rev par
  • 配置 Eclipse/EGit 来跟踪上游存储库

    我正在使用 EGit 如新的 Eclipse 4 2 Juno 版本中提供的 我在 GitHub 上有一个存储库 是从另一个上游存储库分叉的 当我从 Github 上的存储库在 Eclipse 中创建项目时 它正确设置origin指向 Gi
  • 竹子 - 构建我的拉取请求

    当拉取请求进入 git 时 我试图触发竹子中的构建 我可以将 webhook 信息发送到竹子 但它不是构建适当的 sha 标记的签入 而是构建 主 分支 这是否需要对竹子进行一些自定义 git 设置 到目前为止我还没有看到任何简单的事情 在
  • 在 Bitbucket 中分叉存储库,保留分叉删除原始内容

    我在 Bitbucket 中分叉了一个存储库 但我想知道删除原始存储库后会发生什么 克隆也会被删除吗 别担心 分叉将继续存在
  • 我是否需要在裸仓库上运行 git gc ?

    man git gc http www kernel org pub software scm git docs git gc html其中没有明显的答案 而且我在谷歌上也没有任何运气 尽管我可能只是使用了错误的搜索词 我明白你应该偶尔跑步
  • 使用 Git 撤消临时更改

    假设我在 master 上并且有一个斑点 DEBUG FALSE CACHE SIZE 100 code code code 现在我开始在新分支中调试 DEBUG TRUE Don t forget to turn off CACHE SI
  • git 如何在不同分支中保持不同的配置文件?

    请允许我先表达一下我的尝试 假设我有两个分支 Alice1 和 Alice2 Alice1 有自己的服务器 Alice2 也有自己的服务器 我希望能够签出 Alice1 编写我的代码 然后通过使用保存在 URL 配置文件中的 URL 直接推
  • Git 将分支从一个远程推送到另一个远程?

    我设置了以下遥控器 git remote korg rorg 以及以下分支 git branch a no branch remotes korg gingerbread remotes korg gingerbread release r

随机推荐