web-dev-qa-db-ja.com

ソースツリーのプッシュに関して、ハンクは何を意味しますか

「開発」ブランチに変更を加えると、ブランチの横に、プッシュされる変更の数を示す上矢印が表示されます。あなたがsourcetreeが数が何であるかをどのように決定するのかあなたは私を混乱させますか?

それはハンクと呼ばれるものに関連しているようですか?塊とは何ですか?

同じ数を返す同等のgit commitはありますか?

23
Breako Breako

プッシュされる変更の数は、おそらく、Origin /マスターより先にあるコミットの数を指し、ハンクとは関係がないことに注意してください。マスターより先にあるコミットを確認するには、次のようにします。

# 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

hunkdiff に関連する用語です:

フォーマットは、元のファイルの前に「---」が付き、新しいファイルの前に「+++」がつくことを除いて、コンテキストフォーマットと同じ2行のヘッダーで始まります。これに続くのは、ファイル内の行の違いを含む1つ以上の変更ハンクです。変更されていないコンテキスト行の前にはスペース文字があり、追加行の前にはプラス記号があり、削除行の前にはマイナス記号があります。

2つのファイルの差分を取ったことがある場合は、次のようなファイルが表示されます(再びウィキペディアから)。

--- /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.

上記のファイルには3つの塊があります。コミットに関連付けられている差分を確認する場合は、git show [<commit>]を使用できます。現在のステージングされていない変更とリポジトリの違いを確認するには、git diffを使用できます。他にもさまざまなオプションがあります。

ハンクの数を数えるには(これは本当に、本当に役に立たないが、主張する場合)、非常に単純なスクリプトを使用できます。

git show | grep '^@@.*@@.*$' | wc -l

2番目の.*の後の@@の理由は、gitのdiffが変更が属する関数も示すため、後でdiffをより適切に適用できるため、ハンクの見出しはたとえば次のようになります。

@@ -85,6 +85,6 @@ void urt_shmem_detach(void *mem)
19
Shahbaz

hunkの質問に答えると:

Hunk means a piece of change in the Git world.

src: https://mvtechjourney.wordpress.com/2014/08/01/git-stage-hunk-and-discard-hunk-sourcetree/

の提案があります

「hunk」という単語を「change」に置き換えれば、Gitに従うのが楽しくなります。

7
Dirk Schumacher

プッシュされる変更の数は、基本的には最後のプッシュ以降に行ったコミットの数です。 Sourcetreeは、コミットに関してリモートヘッドと現在のヘッドの間の距離を調べることでこれを計算します。

git statusは、進行中のコミットの数(=プッシュされるコミットの数)を通知します。

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

これは、diffの個々の断片であるhunkとはあまり関係がありません。

2
nneonneo