Git-如何获取文件';的历史记录已添加到另一个文件。。。还是什么
好吧,基本上是一个开发人员搞砸了。我会试着把它写得简短些,这样更容易理解 我们在Git-如何获取文件';的历史记录已添加到另一个文件。。。还是什么,git,Git,好吧,基本上是一个开发人员搞砸了。我会试着把它写得简短些,这样更容易理解 我们在master中有文件/src/SomeFile.php 开发者创建了一个名为task-1 在master和task-1中分别对/src/SomeFile.php进行了更改 到这里一切正常 开发者决定更改master中的文件结构,并将/src/SomeFile.php移动到/src/newdir/SomeFile.php。除了不使用git移动文件外,他创建了一个新文件,将旧文件中的代码复制粘贴到新文件中,删除旧文件并进
master
中有文件/src/SomeFile.php
开发者创建了一个名为task-1
在master
和task-1
中分别对/src/SomeFile.php
进行了更改
到这里一切正常
开发者决定更改master
中的文件结构,并将/src/SomeFile.php
移动到/src/newdir/SomeFile.php
。除了不使用git移动文件外,他创建了一个新文件,将旧文件中的代码复制粘贴到新文件中,删除旧文件并进行提交
提示转发更多的提交,我们希望将task-1
合并到master
中,并发现/src/newdir/SomeFile.php
的提交历史记录不包含仍然是/src/SomeFile.php
时的原始提交历史记录
所以现在,当我们想进行合并时,它想完全覆盖主文件中的文件,不管分支后发生了什么提交,文件在task-1
中,对于合并冲突,我并没有任何有意义的工作,因为它显示整个文件是不同的
我该如何解决这个问题。我已经回滚了合并。在理想情况下,我将能够返回到文件移动之前的版本,使用git移动文件,使其保留其提交历史,然后让git重新应用从文件移动到当前主版本(预合并)的所有提交,以便我们能够成功合并。然而,我知道这是不可能的
所以我想知道,我是否可以告诉git这个新文件,实际上是旧文件,但是在另一个地方,所以它会对它重新应用文件历史记录,这样我就可以在发生冲突时进行合并并获得有意义的差异
对不起,如果不清楚,我已经尽力解释了
编辑
因此,在github上玩,如果我查看“新”文件/src/newdir/SomeFile.php
并查看其历史记录,它只显示文件“移动”时的提交历史记录(复制/粘贴到新文件,删除旧文件)。然而,如果我看一下“责备”,它会给我一个完整的提交历史记录,即使是从原始文件。为什么只有责备才是这样?我怎样才能让这两者兼而有之
非常感谢。
< P>如果您使用Git 1.7.4+,您可以尝试在合并过程中使用“重命名阈值”参数(%),以使Git考虑文件重命名候选。例如:
git merge -X rename-threshold=25
这是我能想到的唯一方法,因为git在技术上没有一流实体重命名的概念。它只是在某种程度上检测文件重命名。恐怕这并没有起到任何作用。如果文件在task-1
中被“移动”,而不是在master中,我可能会有所帮助。我不确定。不管怎样,我确实尝试过(上升到75),但对我来说没有什么真正的改变。嗯,也许降低阈值百分比而不是增加它会起作用。另外,也许这家伙的脚本会有所帮助:我认为问题不在于合并,而在于在master中无法识别重命名,因此提交历史不存在。我发送的阈值为5。结果仍然相同。我会看看剧本,看看故事是什么。