【问题标题】:Intellij moves delete history in Git repoIntellij 在 Git 存储库中移动删除历史记录
【发布时间】:2015-06-04 03:18:38
【问题描述】:

在 Intellij 中,我在包之间移动文件,似乎 git 删除并重新添加了文件。如何让 Intellij git mv 进行课堂运动?

【问题讨论】:

  • 这有点旧,但我最近遇到了这个问题。当您使用 Intellij 的重构来移动文件时,您将在 Git 窗口中看到该文件已删除并添加(或者如果您调用 git status)。要将它们设为moved,请使用git add file_name。然后在 Intellij 和终端中,您将看到该文件的 renamed。链接:docs.github.com/en/github/managing-files-in-a-repository/…

标签: git intellij-idea


【解决方案1】:

从关于git mv 的其他问答中,Linus Torvalds 似乎把球丢到了这里——尽管他坚持认为这是设计使然。

为了解决这个问题我们可以做到最好..这个过程是

  • 创建git commit用于移动/重命名目录

git 似乎能够使用 --follow 来跟踪这一点,而 Intellij 也能够弄清楚。

请注意,混合和匹配对文件的更新 git mv 是一个失败的配方 - 无论是 git 还是 Intellij 中的。

【讨论】:

    【解决方案2】:

    Git 并没有“移动文件”的概念; git mv 命令只是删除和重新添加的简写(加上实际在文件系统中移动文件)。您可以告诉一些 git 命令尝试检测重命名/移动(通过提供相似度阈值),但无法在存储库中记录文件 x 已移动到 y。

    但是,只要添加+删除发生在同一个提交中,许多 git 命令都能够跟踪移动文件的更改。例如,git blame -C <filename> 将向您显示每一行的原始作者,与上次移动文件的人无关。

    【讨论】:

    • 问题是 Intellij 发出删除和添加,而不是移动。我怎样才能做到这一点,所以它可以保存历史?
    • 除非您也更改文件的内容,否则移动和删除+添加没有区别。
    • 那么为什么 intellij 在我移动课程时会删除历史记录?你懂我的意思吗?你知道这会发生,是吗?你能帮我解决这个问题的intellij方面吗?
    • 你说的是 IntelliJ 的“本地历史”,还是从 IntelliJ 查看的 git 历史,或者从控制台查看的 git 历史(直接使用 git 命令时)?
    • 如果我将一个类从一个包拖到另一个包,然后提交我的更改,在远程存储库中,看起来我是文件每一行的作者。
    猜你喜欢
    • 2019-03-17
    • 2011-05-29
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多