Есть ли способ в Git иметь "описание" для веток?
Хотя я пытаюсь использовать описательные имена, работа над одной веткой иногда ослабляет память о том, почему я создал некоторые другие ветки тем. Я пытаюсь использовать описательные имена для веток, но я думаю, что было бы неплохо "описание" (короткое примечание о назначении ветки).
Ответ 1
Git 1.7.9 поддерживает это. Из примечаний к выпуску 1.7.9:
* "git branch --edit-description" can be used to add descriptive text
to explain what a topic branch is about.
Вы можете увидеть эту функцию, представленную еще в сентябре 2011 года, с коммитами 6f9a332, 739453a3, b7200e8:
struct branch_desc_cb {
const char *config_name;
const char *value;
};
--edit-description::
Откройте редактор и отредактируйте текст, чтобы объяснить, для чего предназначена ветка, которая будет использоваться различными другими командами (например, request-pull
).
Обратите внимание, что это не будет работать для отдельной ветки HEAD.
Это описание используется скриптом request-pull: см. Commit c016814783, но также git merge --log
.
request-pull
- это скрипт, используемый для суммирования изменений между двумя коммитами в стандартный вывод, и включает указанный URL в сгенерированную сводку.
[От @AchalDave] К сожалению, вы не можете отправить описания, поскольку они хранятся в вашей конфигурации, что делает их бесполезными для документирования веток в команде.
Ответ 2
Если вы в конечном итоге используете README, создайте git alias, изменяя git checkout
, чтобы ваш README отображался каждый раз, когда вы переключение ветвей.
Например, добавьте это в ~/.gitconfig в разделе [alias]
cor = !sh -c 'git checkout $1 && cat README' -
После этого вы можете запустить git cor <branch_name>
для переключения ветки и отображения README ветки, на которую вы переключаетесь.
Ответ 3
Используйте 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]()
Ответ 4
README
, предложенный Chris J, может работать, если он настроен с помощью настраиваемого драйвера слияния определенном в .gitattribute
.
Таким образом, локальная версия README
всегда сохраняется во время слияния.
"Описание" для ветвей также известно как "комментарий", связанный с этими метаданными, и не поддерживается.
По крайней мере, с файлом README
вы можете для любой ветки выполнить:
$ git show myBranch:README
Если ваш README находится в корневом каталоге вашего REPO, он будет работать с любым путем, так как путь, используемый git show
является абсолютным из верхнего каталога указанного репо.
Ответ 5
Здесь есть два популярных предложения:
-
git branch --edit-description
: Нам это не нравится, потому что вы не можете его подтолкнуть. Может быть, я могу вспомнить, какие ветки я создал, но моя команда не может этого сделать.
-
README
файл пр. филиал. Это боль во время слияний: супер-склонный к слиянию конфликтов, и мы будем тянуть README
от ветвей, когда мы объединяем ветки функций. Разница между ветвями также является болью.
Мы решили создать ветвь сирота branches-readme
. Сиротские ветки - это ветки со своей отдельной историей - вы можете знать их из ветвей Гитуба 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
можно рассмотреть файл README.yaml
.
Ответ 6
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'
Команда будет определять глобальную опцию alias.about
как выражение оболочки. Запуск git about <branch>
в репозитории отобразит описание ветки, если установлено.
Ответ 7
Здесь возможная реализация команды 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";
}
Ответ 8
Вот 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 за ответ, с которого я начал.
Ответ 9
Вы можете прикреплять комментарии к тегам:
git tag -m 'this was a very good commit' tag1
По соглашению вы можете иметь теги, связанные с вашими именами ветвей, или вы можете использовать tag -f, чтобы оставить комментарий во главе ваших ветвей.
Ответ 10
Я уверен, что функция в настоящее время не поддерживается. Я считаю, что лучше всего создать текстовый файл описания, в основном README, в ветке, которая имеет необходимую информацию.
Ответ 11
Выбранный ответ кажется мне излишним. Я был бы склонен поддерживать файл описания ветвлений, который является обычным файлом с контролируемым источником, например master.txt
, dev.txt
и т.д., И если есть громоздкое число или ветки, я бы создал иерархию, чтобы лучше ее организовать.
Ответ 12
использование
git branch --list -v
показать ветку вверх по течению:
git branch --list -vv
Добавьте -r
чтобы показать только пульты, или -a
чтобы показать пульты и локальные.
Ответ 13
Просто используйте:
git config branch.<branch name>.description
Предоставить кредит, в котором должен быть предоставлен кредит:
https://glebbahmutov.com/blog/git-branches-with-descriptions/