【问题标题】:Git merge local history to remote repositoryGit 合并本地历史到远程仓库
【发布时间】:2018-12-14 19:55:33
【问题描述】:

我已经重组了我的项目文件夹。我发现我在重组远程存储库中的文件之前丢失了提交历史记录。

我有本地重组之前的历史。 现在每个克隆存储库的人在重组之前都没有提交历史记录。 无论如何我可以重建提交历史并将其合并到远程存储库吗?

当我尝试这个命令时:

git log --follow pom.xml

我可以看到文件的完整历史记录,但是当我不使用 --follow 时,日志会在重组提交时停止。我希望它显示所有历史记录。有没有什么办法解决这一问题?

【问题讨论】:

  • 你能再具体一点吗? “我看到我失去了历史”你在哪里看到的?再说一遍“我有重组前的历史”,在哪里?当您在项目中移动某些目录时,本身没有理由丢失您的回购历史记录,因此您似乎忽略了一些事情。
  • 对不起,我试图描述得更具体。当我选择一个文件时,我 intellij 并单击显示历史记录,我会看到所选文件的完整提交历史记录。当我在同一文件的 bitbucket 中执行相同操作时,我只能看到我重组项目那天的历史记录。

标签: git merge commit


【解决方案1】:

最后我发现那只是 Bitbucket 和 Eclipse 的问题。 Bitbucket 显示对存储库的所有提交,但无法使用命令 --follow 显示单文件日志。 Eclipse 也存在同样的问题。 Intellij 工作正常。

【讨论】:

    【解决方案2】:

    在 Git 中丢失历史记录的唯一方法是删除提交。这是因为提交历史。没有文件历史记录;只有提交。

    当您使用 git log --follow pom.xml 时,您是在告诉 Git 合成文件历史记录,方法是浏览提交历史记录并注意何时触及名为 pom.xml 的文件。 --follow 选项告诉 Git,除了检查 pom.xml 是否在该提交中更改,它还应该检查它是否在该提交中重命名犯罪。如果是这样,Git 会检查 earlier 提交的 旧名称(包括其完整目录路径)而不是新名称——因此 Git 不再寻找 new/pom.xml,而是现在寻找old/pom.xml 或其他什么,并为那个文件构造一个文件历史记录。

    如果您使用 IDE,IDE 必须执行与 Git 相同的操作 - 通过选择更改该文件的提交来合成文件历史记录,并检查过程中的重命名操作(如果这是您希望它执行的操作)。

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 2012-10-22
      • 1970-01-01
      • 2012-01-05
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多