ブランチに「説明」を付ける方法はGitにありますか?
説明的な名前を使おうとしていますが、単一のブランチでしばらく作業すると、他のトピックブランチをいくつか作成した理由を思い出すことが時々あります。私はブランチにわかりやすい名前を付けようとしていますが、「説明」(ブランチの目的についての短いメモ)がいいと思います。
ブランチに「説明」を付ける方法はGitにありますか?
説明的な名前を使おうとしていますが、単一のブランチでしばらく作業すると、他のトピックブランチをいくつか作成した理由を思い出すことが時々あります。私はブランチにわかりやすい名前を付けようとしていますが、「説明」(ブランチの目的についての短いメモ)がいいと思います。
回答:
Git 1.7.9はこれをサポートしています。1.7.9のリリースノート:
*「git branch --edit-description」を使用して説明テキストを追加できます トピックブランチとは何かを説明します。
あなたがコミットして、2011年9月に戻って導入されたその機能を見ることができます6f9a332、739453a3、b7200e8:
struct branch_desc_cb {
const char *config_name;
const char *value;
};
--edit-description::
エディターを開き、テキストを編集して、ブランチの目的を説明し、他のさまざまなコマンド(など
request-pull
)で使用します。
切り離されたHEADブランチでは機能しないことに注意してください。
その説明は、スクリプト要求プルで使用されている:参照c016814783をコミットするだけでなく、git merge --log
。
request-pull
標準出力への2つのコミット間の変更を要約するために使用されるスクリプトであり、生成された要約に特定のURLを含めます。
[@AchalDaveから]残念ながら、説明はconfigに保存されているためプッシュできません。チームのブランチを文書化するためには役に立たないからです。
git config branch.topic.description
してブランチの説明を表示することtopic
です。.git/config
ファイルに保存されます。
git branch
リストに説明を表示するだけの場合...
あなたがいる場合か READMEを使用して終了、作成Gitのエイリアス変更git checkout
あなたのREADMEは、あなたが枝を切り替えるたびに表示されるように。
たとえば、これを[エイリアス]の下の〜/ .gitconfigに追加します
cor = !sh -c 'git checkout $1 && cat README' -
この後は、実行することができますgit cor <branch_name>
スイッチブランチにとあなたに切り替えている枝のREADMEを表示します。
1.7.11-msysgit.1
)。代わりに$ 0を使用しています。そして、すべてが大丈夫です。
sh -c
"の代わりにクイック関数を使用します。例えば、。alias = "!f() { git checkout "${1}" && cat README.md; }; f"
(この場合、括弧と引用符は不要です。より複雑なものに必要な場合に備えて、完全を期すために含まれています。)
~/.gitconfig
、under で定義されたgitエイリアスで[alias]
あり、エイリアスの名前は実際に(そして当然のことながら紛らわしく)alias
実際の構成から呼び出されます(cor
この例を一貫させるために名前を変更する必要がありました)。私の実際のalias
エイリアスは: alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
Usage:git alias {alias_name}
またはgit alias {alias_regexp}
です。bash alias
コマンドに似ています。たとえば、$ alias ll
yields(私にとって)alias ll='ls -l'
:; そして$ git alias br
利回り:alias.br branch -v --list
(も使用できます。$ git alias 'b.*'
)
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
は、そのリポジトリの最上位ディレクトリからの絶対パスであるため、任意のパスから機能します。
.gitattributes
ファイルをリポジトリにチェックインするので、いいえ、それは誰にとっても機能します。残念ながら、これは、Azure DevOpsでプルリクエストを使用する場合など、一部のWebベースのインターフェイスを介してマージする場合には機能しないようです。
ここには2つの一般的な提案があります。
git branch --edit-description
:プッシュできないので、これは好きではありません。たぶん私が作成したブランチが何をするか覚えているかもしれませんが、私のチームは確かにできません。README
ファイルpr ブランチ。これはマージ中の苦痛です:競合をマージする傾向が非常に強く、README
機能ブランチをマージするときにブランチからプルインします。ブランチ間の差異もまた苦痛です。孤立したbranches-readme
ブランチを作成することにしました。孤立したブランチは、独自の個別の履歴をgh-pages
持つブランチです。Githubのブランチからそれらを知っているかもしれません。この孤立したブランチには、単一の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>
リポジトリで実行すると、設定されている場合はブランチの説明が表示されます。
"!describe() { git config branch.\"$(git symbolic-ref --short -q HEAD)\".description; }; describe"
git config --global --add alias.about '!describe() { git config branch."$(git symbolic-ref --short -q HEAD)".description; }; describe'
以下は、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
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
(develop) $ git checkout -b test_branch
Switched to a new branch 'test_branch'
(test_branch) $ git about
(test_branch) $ git about "this is the test branch"
(test_branch) $ git about
this is the test branch
(test_branch) $ git checkout -
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
(develop) $ git about
this is a new message
私を始めた答えを@Felicioに特に感謝します。
タグにコメントを付けることができます:
git tag -m 'this was a very good commit' tag1
慣例により、ブランチ名に関連するタグを付けるか、タグ-fを使用して、トピックブランチの先頭にコメントタグを付けます。
この機能は現在サポートされていません。私はあなたの最善の策は、あなたが欲しい情報を持っているブランチで説明テキストファイル、基本的にREADMEを作成することだと思います。
選択した答えは私にはやり過ぎのようです。私は、通常のソース管理ファイルであるブランチごとの説明ファイルを維持する傾向があります。たとえばmaster.txt
、dev.txt
扱いにくい数やブランチがある場合は、階層を作成してより適切に整理します。
git show master:dev.txt
か、選択した回答よりも簡単なものを使用することを忘れないでください。
ただ使用する:
git config branch.<branch name>.description
クレジットの期日にクレジットを付与するには:https : //glebbahmutov.com/blog/git-branches-with-descriptions/
使用する
git branch --list -v
上流のブランチを表示するには:
git branch --list -vv
-r
リモートのみ-a
を表示するか、リモートとローカルを表示するように追加します。