有人以git无法检测到它是同一个文件的方式更改了文件名及其内容。
他们也没有使用git mv
,所以当我收到拉取请求时,我看到一个新文件被添加,一个旧文件被删除,这使得审查无法实现。
作为一个好人,我拉了他们的代码并试图做晚 git mv
,所以我能够为他们的拉取请求添加一个提交并且看得很漂亮在Github评论页面上,但这没有用。
有没有办法对文件进行死后重命名?
答案 0 :(得分:3)
Git不跟踪文件标识:存储库中没有任何内容表明修订版 n 中的文件 data(i) = GettableData.get(row, i)
data(i) match {
case date: Date => data.update(i, new Timestamp(date.getTime))
- case str: String => data.update(i, UTF8String(str))
+ case bigInt: BigInteger => data.update(i, new JBigDecimal(bigInt))
+ case str: String => data.update(i, UTF8String.fromString(str))
case set: Set[_] => data.update(i, set.toSeq)
case _ =>
}
在修订版中从文件bar
重命名/复制/移动(名词 -1)。执行foo
与在新名称上执行git mv
后跟mv
和在旧名称上git add
相同。存储库只是在每次提交时存储目录树的快照,并由工具检查存储库来决定不同提交中的文件如何相互关联。
当您查看修订历史记录并且git表示文件已被移动或重命名时,它会根据旧文件和新文件内容的相似性在本地确定。许多git命令支持git rm
选项,该选项允许您指定相似性阈值,以确定同一提交中的删除和添加应被视为重命名。默认阈值为50%。
如果您希望git默认将更改视为重命名,而不必在每次检查存储库时指定较低的-M
阈值,则可以将更改拆分为两个提交:一个用于更改内容同时保留名称,一个用来重命名文件,同时保持内容不变(或者至少改变不到50%)。