web-dev-qa-db-ja.com

Gitのブランチの説明

Gitにブランチの「説明」を表示する方法はありますか?

わかりやすい名前を使用しようとしていますが、しばらくの間、1つのブランチで作業すると、他のトピックブランチを作成した理由を思い出せなくなることがあります。ブランチにはわかりやすい名前を使用しようとしていますが、「説明」(ブランチの目的に関する短いメモ)がいいと思います。

260
Noufal Ibrahim

Git 1.7.9はこれをサポートしています。 1.7.9リリースノート から:

 *「git branch --edit-description」を使用して、説明的なテキストを追加できます。
トピックブランチの内容を説明します。

コミット 6f9a332739453ab7200e8 :で2011年9月に導入された機能を見ることができます。

struct branch_desc_cb {
  const char *config_name;
  const char *value;
};

--edit-description::

エディターを開き、テキストを編集して、ブランチの目的を説明し、他のさまざまなコマンド(request-pullなど)で使用します。

デタッチされたHEADブランチでは機能しないことに注意してください。

その説明は、スクリプトrequest-pullによって使用されます。 commit c01681478 を参照してください。ただし、 git merge --log も参照してください。

request-pull は、2つのコミット間の変更を標準出力に要約するために使用されるスクリプトであり、生成された要約に指定のURLを含めます。

[@AchalDaveより]残念なことに、説明は構成に保存されているため、説明をプッシュすることはできません。チーム内のブランチを文書化するために、説明は役に立たなくなります。

187
Greg Hewgill

doがREADMEを使用することになった場合は、READMEが表示されるようにgit checkoutを変更して git alias を作成しますブランチを切り替えるたびに。

たとえば、これを〜/ .gitconfigの[alias]に追加します

cor = !sh -c 'git checkout $1 && cat README' -

この後、git cor <branch_name>を実行してブランチを切り替え切り替え先のブランチのREADMEを表示できます。

39
tta

Chris J によって提案されたREADMEは、でセットアップされていれば機能します .gitattributeで定義されたカスタムマージドライバー。
そのようにして、READMElocalバージョンは、マージ中に常に保持されます。

ブランチの「説明」は、そのメタデータに関連付けられた「コメント」とも呼ばれ、サポートされていません。

少なくとも、READMEファイルを使用すると、どのブランチでも次のことができます。

$ git show myBranch:README

READMEがREPOのルートディレクトリにある場合、 git show によって使用されるパスは、このリポジトリの最上位ディレクトリからの絶対パスであるため、どのパスからでも機能します。

28
VonC

git branch --edit-descriptionを使用して、ブランチの説明を設定または編集します。

以下は、git branchに似たブランチを表示するシェル関数ですが、説明が追加されています。

# Shows branches with descriptions
function gb() {
  current=$(git rev-parse --abbrev-ref HEAD)
  branches=$(git for-each-ref --format='%(refname)' refs/heads/ | sed 's|refs/heads/||')
  for branch in $branches; do
    desc=$(git config branch.$branch.description)
    if [ $branch == $current ]; then
      branch="* \033[0;32m$branch\033[0m"
     else
       branch="  $branch"
     fi
     echo -e "$branch \033[0;36m$desc\033[0m"
  done
}

gbは次のようになります。画像が腐敗した場合のテキストとしてここに表示されます。

$ gb
* logging Log order details.  Waiting for clarification from business.
  master 
  sprocket Adding sprockets to the parts list.  Pending QA approval.

そして画像として、色を見ることができます:

enter image description here

28
jsageryd

ここには2つの一般的な提案があります。

  1. git branch --edit-description:プッシュできないので、これは好きではありません。たぶん、私が作成したブランチが何をするのか覚えているかもしれませんが、私のチームは確かにできません。
  2. READMEファイルpr。ブランチ。これはマージ中の痛みです。競合をマージする傾向があり、機能ブランチをマージするときにブランチからREADMEをプルします。ブランチ間の違いも苦痛です。

Orphan branches-readmeブランチを作成することにしました。孤立ブランチは、独自の個別の履歴を持つブランチです-Githubのgh-pagesブランチからそれらを知ることができます。この孤立ブランチには、単一のREADMEファイルが含まれます。次のような内容があります。

master:
    The default branch
mojolicious:
    Start using Mojolicious
branch-whatever:
    Description of the whatever branch

プッシュ可能でマージしやすいです。以下を使用して、任意のブランチからREADMEを表示します。

git show branches-readme:README

デメリットは、READMEを更新するときに奇妙なOrphanブランチをチェックアウトする必要があり、READMEはブランチの名前が変更されたり来たり行ったりしても自動更新されないことです。しかし、それは私たちにとっては問題ありません。

次のようにします:

git checkout --Orphan branches-readme
# All the files from the old branch are marked for addition - skip that
git reset --hard
# There are no files yet - an empty branch
ls
vi README
# put in contents similar to above
git add README
git commit -m "Initial description of the branches we already have"
git Push Origin branches-readme
# get all your original files back
git checkout master

同様に、個々のチームメンバーは、チームにプッシュしない限り、必要に応じて独自のプライベートブランチを記述する独自のbranches-$user孤立ブランチを作成することもできます。

さらにツールを使用すると、これをgit branchの出力と統合することもできます。そのためには、おそらく、READMEの代わりにREADME.yamlファイルを考慮することができます。

12
Peter V. Mørch
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'

コマンドは、シェルオプションとしてグローバルオプションalias.aboutを定義します。リポジトリでgit about <branch>を実行すると、設定されている場合はブランチの説明が表示されます。

9
Felicio

グレッグヒューギルが示唆するgit branchesコマンドの可能な実装を次に示します。

#!/usr/bin/Perl

sub clean {
    map { s/^[\s\*]*\s// } @_;
    map { s/\s*$// } @_;
    return @_;
}

sub descr {
    $_ = `git config branch.@_.description`;
    s/\s*$//;
    return $_;
};
sub indent {
    $_ = shift;
    s/^/      /mg;
    return $_;
};

my @branches = clean `git branch --color=never --list`;
my %merged = map { $_ => 1 } clean `git branch --color=never --merged`;

for my $branch (@branches) {
    my $asis = `git branch --list --color=always $branch`;
    $asis =~ s/\s*$//;
    print "  $asis";
    print " \033[33m(merged)\033[0m" if ($merged{$branch} and $branch ne "master");
    print "\n";

    print indent descr $branch;
    print "\n";
    print "\n";
}
5
Owen

タグにコメントを添付できます:

git tag -m 'this was a very good commit' tag1

慣例により、ブランチ名に関連するタグを使用したり、tag -fを使用してトピックブランチの先頭にコメントタグを保持したりできます。

2
Jamey Hicks

以下はgitaliasで、現在のブランチの説明を設定および読み取りできます。

git config --global --add alias.about '!describe() { msg="$1"; git config branch."$(git rev-parse --abbrev-ref HEAD)".description ${msg:+"$msg"}; }; describe'

使用法/例:

(develop) $ git about
(develop) $ git about message
(develop) $ git about
message
(develop) $ git about "this is a new message"
(develop) $ git about
this is a new message

私を始めた答えに@Felicioに感謝します。

1
Wayne Burkett

つかいます

git branch --list -v

アップストリームブランチを表示するには:

git branch --list -vv

-rを追加してリモートのみを表示するか、-aを追加してリモートとローカルを表示します。

0
Markus Hartman

この機能は現在サポートされていません。最善の方法は、基本的に、必要な情報を含むブランチに説明テキストファイルREADMEを作成することです。

0
Chris J

ただ使用する:

git config branch.<branch name>.description

クレジットが支払われるべき場所にクレジットを与えるには: https://glebbahmutov.com/blog/git-branches-with-descriptions/

0
Caleb Miller

選択された答えは、私にはやり過ぎのようです。 master.txtdev.txtなど、通常のソース管理ファイルであるブランチごとの記述ファイルを維持する傾向があり、扱いにくい番号またはブランチがある場合は階層を作成しますより良く整理するために。

0
pajato0