Py学习  »  Git

第n个修改文件的Git diff?

stevec • 2 年前 • 529 次点击  

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

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
 
529 次点击  
文章 [ 3 ]  |  最新文章 2 年前
Marcus
Reply   •   1 楼
Marcus    2 年前

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

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

j6t
Reply   •   2 楼
j6t    2 年前

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

git diff

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

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

Brian
Reply   •   3 楼
Brian    2 年前

如果在类似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

将按预期工作。