web-dev-qa-db-ja.com

Gitの責任は何ですか?

私はgit blameを使う方法についてたくさんの質問を見ましたが、私は本当にそれらを理解していません。

Githubインターフェイスのファイルの上にblameボタンがあります。それをクリックすると、左バーにユーザー名との差分が表示されます。それは何を意味しますか?

GitHubとは別に、なぜgit blameが実際に使用されているのですか?

197
Himanshu Mishra

Git-scm http://git-scm.com/docs/git-blame から

与えられたファイルの各行に、その行を最後に修正したリビジョンからの情報で注釈を付けます。オプションで、与えられたリビジョンから注釈を付け始めます。

1回以上指定すると、-Lは注釈を要求された行に制限します。

例:

[email protected]:~# git blame .htaccess
...
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300  4) allow from all
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300  5)
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300  6) <IfModule mod_rewrite.c>
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300  7)     RewriteEngine On
...

git blameは行単位の変更履歴を年代順に表示しないことに注意してください。 HEADの最後のコミットまでに文書の行を最後に変更したのは誰であるかを示すだけです。

つまり、ドキュメント行の完全な履歴/ログを見るためには、git blame path/to/fileのコミットごとにgit logを実行する必要があるということです。

149
Mark

コマンドはそれ自体を非常によく説明します。どの同僚が特定の行を書いたか、プロジェクトを台無しにしたかを把握することで、blame them :)

106
XRay

GitHubから https://help.github.com/articles/using-git-blame-to-trace-changes-in-a-file

BlameコマンドはGit機能で、誰がファイルに変更を加えたかを判断するのに役立ちます。

その否定的な名前にもかかわらず、git blameは実際にはかなり無害です。その主な機能は、誰がファイルのどの行を変更したか、そしてその理由を指摘することです。それはあなたのコードの変更を識別するための便利なツールになります。

基本的にgit-blameはどのリビジョンと作者がファイルの各行を最後に修正したかを示すのに使われます。ファイル開発の歴史を調べるのと同じです。

57
Himanshu Mishra

git blameコマンドは、ファイルに対して行われた最新の変更を誰/どのコミットが担当しているかを知るために使用されます。各行の作者/コミットも見ることができます。

git blame filename(コード内のすべての行の変更を担当するコミット)

git blame filename -L 0,10( "0"行から "10"行への変更を担当します)

非難のための他の多くのオプションがあります、一般的にこれらは助けることができます。

20
Bharath T S

git blame コマンドはその行を最後に修正したリビジョンからの情報でその行に注釈を付けます、そして... Git 2.22(Q2 2019)では、そのようになりますより速いgit blame "、特に線形履歴(これは最適化するべき標準です)において。

David Kastrup(fedelibre による commit f892014 (02 Apr 2019)を参照してください。
Junio C Hamano - gitster - in commit 4d8c4da 、2019年4月25日にマージ)

blame.c:OriginのBLOBを熱心に削除しない

親BLOBが既に非難のためにキューに入れられているチャンクを持っているとき、1つの非難ステップの終わりにBLOBを落とすことはそれをすぐに再ロードさせ、I/Oの量を倍増させます。

そのような親BLOBをメモリ内に保持することは、主に古いブランチからのマージを処理するときに追加のメモリプレッシャーを招くはずの合理的な最適化のように思われます。

1
VonC