Git にブランチの「説明」を付ける方法はありますか?
わかりやすい名前を使用するように努めていますが、1 つのブランチでしばらく作業していると、なぜ他のトピック ブランチを作成したのかという記憶が薄れてしまうことがあります。ブランチには説明的な名前を使用しようとしていますが、「説明」(ブランチの目的に関する短いメモ) がいいと思います。
Git にブランチの「説明」を付ける方法はありますか?
わかりやすい名前を使用するように努めていますが、1 つのブランチでしばらく作業していると、なぜ他のトピック ブランチを作成したのかという記憶が薄れてしまうことがあります。ブランチには説明的な名前を使用しようとしていますが、「説明」(ブランチの目的に関する短いメモ) がいいと思います。
Git1.7.9はこれをサポートしています。1.7.9リリースノートから:
*「gitbranch--edit-description」を使用して説明テキストを追加できます トピックブランチとは何かを説明するため。
2011年9月に導入された機能は、コミット6f9a332、739453a3、b7200e8で確認できます。
struct branch_desc_cb {
const char *config_name;
const char *value;
};
--edit-description::
エディターを開き、テキストを編集して、ブランチの目的を説明し、他のさまざまなコマンドで使用できるようにします(例
request-pull
)。
切り離されたHEADブランチでは機能しないことに注意してください。
その説明は、スクリプトrequest-pullによって使用されます。commitc016814783を参照してください。また、git merge --log
。
request-pull
は、標準出力への2つのコミット間の変更を要約するために使用されるスクリプトであり、生成された要約に指定されたURLを含めます。
[@AchalDaveから]残念ながら、説明は構成に保存されているためプッシュできず、チーム内のブランチを文書化するために使用できなくなります。
README を使用することになった場合は、ブランチを切り替えるたびに README が表示されるように変更するgit エイリアスを作成します。git checkout
たとえば、これを ~/.gitconfig の[alias]の下に追加します。
cor = !sh -c 'git checkout $1 && cat README' -
この後、実行git cor <branch_name>
してブランチを切り替え、切り替え先のブランチの README を表示できます。
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.
そして画像として、色を見ることができます:
で定義されたカスタム マージ ドライバでセットアップされている場合、Chris JREADME
によって提案されたものは機能します。
こうすることで、 のローカルバージョンがマージ中に常に保持されます。.gitattribute
README
ブランチの「説明」は、そのメタデータに関連付けられた「コメント」とも呼ばれ、サポートされていません。
少なくとも、README
ファイルを使用すると、どのブランチでも次のことができます。
$ git show myBranch:README
README が REPO のルート ディレクトリにある場合、使用されるパスgit show
はそのレポのトップ ディレクトリからの絶対パスであるため、任意のパスから機能します。
ここには 2 つの一般的な提案があります。
git branch --edit-description
:プッシュできないので、これは好きではありません。自分が作成したブランチの機能を覚えているかもしれませんが、私のチームは覚えていません。README
ファイルPR。ブランチ。これはマージ中の苦痛です: 競合をマージする可能性が非常に高く、README
機能ブランチをマージするときにブランチから引き込むことになります。ブランチ間の違いも苦痛です。孤立した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
。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.yaml
に、プレーンの代わりにファイルを考えることができるかもしれませんREADME
。
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'
コマンドはグローバル オプションalias.about
をシェル式として定義します。git about <branch>
設定されている場合、リポジトリで実行すると、ブランチの説明が表示されます。
git branches
これは、 Greg Hewgill がほのめかしたコマンドの可能な実装です。
#!/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 branch branch-20200328
git notes add branch-20200328 -m "This branch is for whatever"
git notes show branch-20200328
タグにコメントを付けることができます:
git tag -m 'this was a very good commit' tag1
慣例により、ブランチ名に関連するタグを付けるか、tag-fを使用してトピックブランチの先頭にコメント付きタグを保持することができます。
選択された回答は、私にはやり過ぎのように思えます。通常のソース管理ファイルであるブランチごとの記述ファイルを維持する傾向があります。たとえばmaster.txt
、dev.txt
、などです。扱いにくい数またはブランチがある場合は、階層を作成して整理します。
その機能が現在サポートされていないことは確かです。最善の策は、必要な情報を含むブランチに、基本的に README である説明テキスト ファイルを作成することだと思います。
使用する
git branch --list -v
アップストリーム ブランチを表示するには:
git branch --list -vv
-r
リモートのみ-a
を表示する場合、またはリモートとローカルを表示する場合に追加します。