在git中复制和编辑文件会将整个文件显示为新更改

时间:2018-12-13 08:06:57

标签: git

我刚刚为我的同事提交了一份PR,然后提出了(明显的)“问题”。

基本上,我已经复制了50多个文件,并对某些行进行了更改。在我们的系统中,我们将_2或_3附加到文件中以表示版本号。

在拉取请求中,它将这50个文件中的每一行显示为新行,因此很难查看这些文件。

我的问题是,git是否有办法让我基本上说“不要将此文件视为新文件,而应将其视为X的副本并进行更改。”

我知道我的同事可以手动比较两个文件,但是我也希望它也可以显示在PR中。

2 个答案:

答案 0 :(得分:1)

  1. git仅保留您操作的结果内容,
  2. 它不保留有关您如何达到此状态的信息。

即:

  1. 它存储包含2个文件filefile_2的提交,内容非常相似,
  2. file_2是最初从file复制而来的,而“ file_2开始是空的,我把file的全部内容都打了回去,这没什么区别”

有一些选项要求git diff检测到重命名和副本(请参阅“ Record file copy operation with Git”,我建议将其作为副本),我认为github的GUI无法激活这些选项显示PR的差异时。

答案 1 :(得分:-1)

您可以按照以下步骤操作。我只是举file1的例子。您需要对其他文件执行相同的操作。

mv file1 file1_version
git rm file1 #remove file1 from git tracking
vi file1_version #make file version changes, assuming you use vi editor
git add file1_version #add file1_version for tracking
git commit -m"rename and adding file"

现在,git将能够根据内容确定文件是否已更改。

有关更多信息,请read this stack overflow answer