这个问题需要“行号”。如果您不关心输出中的行号,请参阅此问题和答案。
基本上,我不希望看到更改的内容,只希望看到文件名和行号。
这个问题需要“行号”。如果您不关心输出中的行号,请参阅此问题和答案。
基本上,我不希望看到更改的内容,只希望看到文件名和行号。
当前回答
试着使用:
git dif | grep -B <number of before lines to show> <regex>
在我的例子中,我试图搜索我在许多文件中放置调试语句的位置。我需要看看哪个文件已经得到了这样的调试语句:
git diff | grep -B 5 dd\(
其他回答
试着使用:
git dif | grep -B <number of before lines to show> <regex>
在我的例子中,我试图搜索我在许多文件中放置调试语句的位置。我需要看看哪个文件已经得到了这样的调试语句:
git diff | grep -B 5 dd\(
注意:如果您只是寻找更改的文件的名称(没有更改的行号),请在这里查看另一个答案。
这方面没有内置选项(我也不认为它有多大用处),但是在Git中,借助“外部diff”脚本可以做到这一点。
这是一个相当糟糕的问题;这将由您来修复输出您想要的方式。
#! /bin/sh
#
# run this with:
# GIT_EXTERNAL_DIFF=<name of script> git diff ...
#
case $# in
1) "unmerged file $@, can't show you line numbers"; exit 1;;
7) ;;
*) echo "I don't know what to do, help!"; exit 1;;
esac
path=$1
old_file=$2
old_hex=$3
old_mode=$4
new_file=$5
new_hex=$6
new_mode=$7
printf '%s: ' $path
diff $old_file $new_file | grep -v '^[<>-]'
关于“external diff”的详细信息,请参见Git手册中GIT_EXTERNAL_DIFF的描述(大约在700行,非常接近结尾)。
我最喜欢的:
git diff --name-status
前置文件状态,例如:
A new_file.txt
M modified_file.txt
D deleted_file.txt
2)如果你想要统计数据,那么:
git diff --stat
将显示如下内容:
new_file.txt | 50 +
modified_file.txt | 100 +-
deleted_file | 40 -
3)最后,如果你真的只想要文件名:
git diff --name-only
将简单地显示:
new_file.txt
modified_file.txt
deleted_file
我用grep作为初始解。
$ git diff | grep -A2 -- '---'
输出示例:
--- a/fileA.txt
+++ b/fileA.txt
@@ -0,0 +1,132 @@
--
--- a/B/fileC.txt
+++ b/B/fileC.txt
@@ -33663,3 +33663,68800 @@ word_38077.png,Latin
--
--- a/D/fileE.txt
+++ b/D/fileE.txt
@@ -17998,3 +17998,84465 @@ word_23979.png,Latin
--
--- a/F
+++ b/F
@@ -1 +1 @@
也许你可以看到彩色的输出。它可以帮助您轻松地阅读输出。
最干净的输出,也就是文件名/路径
git diff-tree --no-commit-id --name-only -r