Gitにブランチの「説明」を表示する方法はありますか?
わかりやすい名前を使用しようとしていますが、しばらくの間、1つのブランチで作業すると、他のトピックブランチを作成した理由を思い出せなくなることがあります。ブランチにはわかりやすい名前を使用しようとしていますが、「説明」(ブランチの目的に関する短いメモ)がいいと思います。
Git 1.7.9はこれをサポートしています。 1.7.9リリースノート から:
*「git branch --edit-description」を使用して、説明的なテキストを追加できます。 トピックブランチの内容を説明します。
コミット 6f9a332 、 739453a 、 b7200e8 :で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より]残念なことに、説明は構成に保存されているため、説明をプッシュすることはできません。チーム内のブランチを文書化するために、説明は役に立たなくなります。
doがREADMEを使用することになった場合は、READMEが表示されるようにgit checkout
を変更して git alias を作成しますブランチを切り替えるたびに。
たとえば、これを〜/ .gitconfigの[alias]に追加します
cor = !sh -c 'git checkout $1 && cat README' -
この後、git cor <branch_name>
を実行してブランチを切り替え、切り替え先のブランチのREADMEを表示できます。
Chris J によって提案されたREADME
は、でセットアップされていれば機能します .gitattribute
で定義されたカスタムマージドライバー。
そのようにして、README
のlocalバージョンは、マージ中に常に保持されます。
ブランチの「説明」は、そのメタデータに関連付けられた「コメント」とも呼ばれ、サポートされていません。
少なくとも、README
ファイルを使用すると、どのブランチでも次のことができます。
$ git show myBranch:README
READMEがREPOのルートディレクトリにある場合、 git show
によって使用されるパスは、このリポジトリの最上位ディレクトリからの絶対パスであるため、どのパスからでも機能します。
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.
そして画像として、色を見ることができます:
ここには2つの一般的な提案があります。
git branch --edit-description
:プッシュできないので、これは好きではありません。たぶん、私が作成したブランチが何をするのか覚えているかもしれませんが、私のチームは確かにできません。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
ファイルを考慮することができます。
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'
コマンドは、シェルオプションとしてグローバルオプションalias.about
を定義します。リポジトリでgit about <branch>
を実行すると、設定されている場合はブランチの説明が表示されます。
グレッグヒューギルが示唆する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";
}
タグにコメントを添付できます:
git tag -m 'this was a very good commit' tag1
慣例により、ブランチ名に関連するタグを使用したり、tag -fを使用してトピックブランチの先頭にコメントタグを保持したりできます。
以下はgit
alias
で、現在のブランチの説明を設定および読み取りできます。
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に感謝します。
つかいます
git branch --list -v
アップストリームブランチを表示するには:
git branch --list -vv
-r
を追加してリモートのみを表示するか、-a
を追加してリモートとローカルを表示します。
この機能は現在サポートされていません。最善の方法は、基本的に、必要な情報を含むブランチに説明テキストファイルREADMEを作成することです。
ただ使用する:
git config branch.<branch name>.description
クレジットが支払われるべき場所にクレジットを与えるには: https://glebbahmutov.com/blog/git-branches-with-descriptions/
選択された答えは、私にはやり過ぎのようです。 master.txt
、dev.txt
など、通常のソース管理ファイルであるブランチごとの記述ファイルを維持する傾向があり、扱いにくい番号またはブランチがある場合は階層を作成しますより良く整理するために。