Подтвердить что ты не робот

Что означает ханк в отношении толчков на sourcetree

Когда я вношу изменения в свою ветку "develop", я вижу стрелку вверх рядом с веткой, сообщающую мне, сколько изменений будет нажато. Что меня смущает, так как sourcetree решает, что такое число?

Кажется, что это связано с чем-то, называемым hunks? Что такое куски?

Существует ли equialvalent git commit, который возвращает тот же номер?

4b9b3361

Ответ 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)

Ответ 2

Количество изменений, которые нужно нажать, - это, в основном, количество фиксаций, сделанных вами с момента последнего нажатия. Sourcetree вычисляет это, рассматривая расстояние между удаленной головкой и текущей головой в терминах фиксации.

git status сообщит вам количество коммитов, которые вы впереди (= количество коммитов, которые будут нажаты):

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.

Это не имеет особого отношения к ханкам, которые являются отдельными элементами различий.