Мне сказали сделать 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......
Если вывод 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......