社区所有版块导航
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

第n个修改文件的Git diff?

stevec • 3 年前 • 1233 次点击  

假设我们更改了几个文件,并且希望一次查看一个文件的差异,我知道我们可以使用这样的方法

git status

Changes not staged for commit:
 directory)
    modified:   app/assets/stylesheets/application.scss
    modified:   app/javascript/packs/application.js
    modified:   app/views/layouts/application.html.erb
    modified:   config/webpack/environment.js

然后跑

git diff app/assets/stylesheets/application.scss

然后

git diff app/javascript/packs/application.js

等等

git diff app/views/layouts/application.html.erb

逐个查看每个文件的差异(这里需要逐个查看,但所有文件路径的键入都不需要,即使使用tab自动完成)。

问题

有没有一种方法可以实现同样的效果(即一次查看单个文件的git diff),但不必键入(手动或使用tab autocomplete)更改文件的完整路径?(例如,我们能否以某种方式引用伪代码: git diff --mod_file 1 , git diff --mod_file 2 等等)?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132313
 
1233 次点击  
文章 [ 3 ]  |  最新文章 3 年前
Marcus
Reply   •   1 楼
Marcus    3 年前

我想 git difftool 我会做你想做的。

也许你想安装一些自己的difftool,任何适合你需要的工具。

j6t
Reply   •   2 楼
j6t    3 年前

您可以使用 less .也就是说,你打字

git diff

和往常一样,然后打字 /^diff 要搜索大块头,请键入 n 直到你找到你感兴趣的文件。类型 N 向后搜索。

较少的 记住最近使用的搜索模式。下一次就可以打字了 N .使用上下箭头循环浏览最近使用的图案。

Brian
Reply   •   3 楼
Brian    3 年前

如果在类似bash的shell中工作,可以定义一个shell函数,例如

function gitdiffn() {
    git diff ${@:2} $(git diff --name-only | sed -n "$1 p") 
}

然后可以用来浏览修改过的文件列表(使用基于1的索引) 像

$ gitdiffn 1
$ gitdiffn 2
# ...

包括 ${@:2} $(command substitution) 在获取第n个文件名时,我们允许向 git diff 调用,所以像

$ gitdiffn 1 --minimal

将按预期工作。