【问题标题】:How do you tell git that a delete and and add are really a move? [duplicate]你如何告诉 git 删除和添加确实是一个动作? [复制]
【发布时间】:2023-03-02 22:24:01
【问题描述】:

大多数时候,git 可以确定我何时移动了文件,但有时无法确定。有没有办法告诉 git,“相信我,这是一个动作?”

其中一个关键组成部分是我正在使用一个工具来重命名文件。必须恢复重命名并以git mv 重试会很烦人,尤其是在移动之前/之后文件发生其他更改时。

【问题讨论】:

  • 你混淆了两个不相关的东西。 mv 删除和添加,反之亦然。 想知道的是Git如何“知道”这些是相同的文件。这与文件的内容有关,而不是您最初给出的命令。
  • 啊,这是个骗子。有趣的是,它并没有提出这个问题,而且在谷歌搜索时也没有找到。
  • 我没有投反对票,但这里有一个很好的经验法则:总是问自己,我真的真的认为我是第一个对此感到疑惑的人吗?
  • 简短回答(我曾写过一篇这样说,但问题已关闭)是在两个单独的提交中重命名和更改文件内容。 This article 解释了这种行为。
  • @matt 我想,谷歌搜索,找不到问题,将我的问题输入到 stackoverflow,查看相关帖子,找不到问题,所以我提交了这个问题。当然,没有人知道我经历了这个过程,所以我现在明白了。

标签: git git-mv


【解决方案1】:

如果你发现一个文件正在被添加和删除,但实际上是一个移动,它会在添加两个半时被检测为移动

但是,如果对文件进行了其他更改,它不是移动,而是一个正常的变更集 - 如果您想表示移动,请将其分离到另一个提交中,也许通过隐藏其他改变

【讨论】:

  • 好的,这是有道理的,无论如何似乎是一个很好的做法。
  • “这不是一个移动,而是一个普通的变更集”,这意味着如果我查看新名称的历史记录,则更改文件的先前历史记录会丢失?
  • 有点;它将可用,但仅在较旧的路径中而不是在较新的路径中,这大概是您想要的!你可以用git log -- old/path-to-file.ext看到这个
  • 这就是为什么您应该移动文件并将内容更改为单独的提交
猜你喜欢
  • 2016-04-03
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多