社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

git重命名匹配是否可以忽略空白更改?

Schwern • 5 年前 • 482 次点击  

当我重命名一个文件并进行空白更改(例如更改缩进)时,git无法识别该重命名。我找不到 git diff 使其在查找重命名时忽略空白的标志。这使得审查其他简单的重构变得困难。

例如。。。

$ git init
$ ruby -e '100.times { puts "Basset hounds got long ears" }' > file
$ git add file
$ git commit -m 'first commit'
$ git mv file file2

现在一切都很好。

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    file -> file2

现在,如果我缩进文件中的行,git将不再识别重命名。

$ ruby -i -pe 'gsub(/^/, "  ")' file2
$ git add .
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    file
    new file:   file2

在我承诺之后 git diff -w HEAD^ 仍然显示删除和新文件。我找不到 差异比较 将识别重命名的选项。

是否有一组选项允许git在检测副本和重命名时忽略空白?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39846
 
482 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Fake Code Monkey Rashid
Reply   •   1 楼
Fake Code Monkey Rashid    6 年前

git默认情况下不能这样做。

但是,如果您有诀窍,可以通过更改相似度索引计算来实现。可以找到相关代码 here 在里面 diffcore-delta.c (有充分的记录)和 here 在里面 diffcore-rename.c .

请注意,在git检查文件是否可以被视为重命名(内部)之前,需要进行一些初始检查和平衡。此检查将通过,并对以下问题给出“是”答案:

它是一个普通的非零大小的文件,文件大小没有明显的变化吗?

因此,一种方法是在该点之前添加条件检查,以便如果空白中只有差异,那么相似度索引计算为100%,否则git应该做它通常做的事情。

也就是说,您所经历的就是为什么它经常建议您在更改文件内容之前先重命名文件,但是名称在第一次更改时并不是那么容易。