我被告知要将每个修改文件的 git 消息都放在一行中,这样我就可以使用 grep 查找对该文件的所有更改。例如:
$git commit -a
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
$git log | grep path/to/file.cpp/.h
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
这很好,但是实际的行很难阅读,因为它要么超出屏幕范围,要么不断换行。
如果我想发送如下消息:
$git commit -a
modified: path/to/file.cpp/.h
1) change1
2) change2
etc......
有没有一个好的方法可以使用 grep 或 cut 或其他工具来获取类似的读数
$git log | grep path/to/file.cpp/.h
modified: path/to/file.cpp/.h
1) change1
2) change2
etc......
modified: path/to/file.cpp/.h
1) change1
2) change2
etc......
modified: path/to/file.cpp/.h
1) change1
2) change2
etc......
答案1
如果命令的输出grep
如下所示,
$ git log | grep path/to/file.cpp/.h
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
然后你可以将其传送到下面的 awk 命令来产生所需的输出,
git log | grep path/to/file.cpp/.h | awk -v RS='[-,]' '{print}'
例子:
$ cat aa
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
modified: path/to/file.cpp/.h - 1) change1 , 2) change2, etc......
$ awk -v RS='[-,]' '{print}' aa
modified: path/to/file.cpp/.h
1) change1
2) change2
etc......
modified: path/to/file.cpp/.h
1) change1
2) change2
etc......
modified: path/to/file.cpp/.h
1) change1
2) change2
etc......