Ответ 1
Обратите внимание, что количество изменений, которые нужно нажать, вероятно, относится к числу коммитов, которые вы опередите от начала/мастера, и не имеет отношения к ханкам. Чтобы увидеть коммиты, которые вы опередите мастера, вы можете сделать следующее:
# get most recent commit found in both master and origin/master
mb=$(git merge-base master origin/master)
# show commits from that merge base to current head
git log $mb..HEAD
Если вы хотите посчитать это, просто выполните:
mb=...
git log --pretty=oneline $mb..HEAD | wc -l
hunk
- это термин, относящийся к diff
:
Формат начинается с того же двухстрочного заголовка, что и формат контекста, за исключением того, что исходному файлу предшествует "---", а новому файлу предшествует "+++". Ниже перечислены одна или несколько переменных ханков, которые содержат различия в строке в файле. Неизмененным контекстным строкам предшествует символ пробела, а строкам сложения предшествует знак "плюс", а линиям удаления предшествует знак "минус".
Если вы когда-либо брали разницу двух файлов, вы видите такой файл (снова из википедии):
--- /path/to/original ''timestamp'' +++ /path/to/new ''timestamp'' @@ -1,3 +1,9 @@ +This is an important +notice! It should +therefore be located at +the beginning of this +document! + This part of the document has stayed the same from version to @@ -5,16 +11,10 @@ be shown if it doesn't change. Otherwise, that would not be helping to -compress the size of the -changes. - -This paragraph contains -text that is outdated. -It will be deleted in the -near future. +compress anything. It is important to spell -check this dokument. On +check this document. On the other hand, a misspelled word isn't the end of the world. @@ -22,3 +22,7 @@ this paragraph needs to be changed. Things can be added after it. + +This paragraph contains +important new additions +to this document.
В приведенном выше файле есть три куска. Если вы хотите увидеть diff, связанный с фиксацией, вы можете использовать git show [<commit>]
. Чтобы увидеть разницу между текущими неустановленными изменениями и репозиторием, вы можете использовать git diff
. Существуют и другие варианты.
Чтобы подсчитать количество кусков (что действительно, действительно бесполезно, но если вы настаиваете), вы можете использовать очень простой script.
git show | grep '^@@.*@@.*$' | wc -l
Причиной для .*
после второго @@
является то, что git diff также показывает функцию, к которой принадлежит изменение, поэтому она может лучше применить diff позже, поэтому заголовок столбца может выглядеть примерно так:
@@ -85,6 +85,6 @@ void urt_shmem_detach(void *mem)