Gibt es in Git eine Möglichkeit, eine 'Beschreibung' für Zweige zu haben?
Während ich versuche, beschreibende Namen zu verwenden, dämpft die Arbeit an einem Zweig manchmal die Erinnerung daran, warum ich einige der anderen Zweigzweige gemacht habe. Ich versuche, beschreibende Namen für die Zweige zu verwenden, aber ich denke, eine 'Beschreibung' (kurze Anmerkung zum Zweck des Zweiges) wäre Nizza.
Git 1.7.9 unterstützt dies. Aus den 1.7.9 Versionshinweisen :
* "git branch --edit-description" kann zum Hinzufügen von beschreibendem Text verwendet werden um zu erklären, worum es in einem Themenzweig geht .
Sie können diese bereits im September 2011 eingeführte Funktion mit folgenden Commits 6f9a332 , 739453a3 , b7200e8 sehen:
struct branch_desc_cb {
const char *config_name;
const char *value;
};
--edit-description::
Öffnen Sie einen Editor und bearbeiten Sie den Text, um zu erklären, wozu der Zweig dient, der von verschiedenen anderen Befehlen verwendet wird (z. B.
request-pull
).
Beachten Sie, dass dies für einen getrennten HEAD - Zweig nicht funktioniert.
Diese Beschreibung wird vom Skript request-pull verwendet: siehe commit c016814783 , aber auch git merge --log
.
request-pull
ist ein Skript, das die Änderungen zwischen zwei Commits der Standardausgabe zusammenfasst und die angegebene URL in die generierte Zusammenfassung einfügt.
[Von @AchalDave] Leider können Sie keine Beschreibungen pushen, da sie in Ihrer Konfiguration gespeichert werden. Dies macht sie unbrauchbar, um Zweige in einem Team zu dokumentieren.
Wenn Sie do am Ende der README verwenden, erstellen Sie einen git-Alias , der git checkout
so ändert, dass Ihr README bei jedem Wechsel der Verzweigungen angezeigt wird.
Fügen Sie dies beispielsweise in ~/.gitconfig unter [Alias] hinzu.
cor = !sh -c 'git checkout $1 && cat README' -
Danach können Sie git cor <branch_name>
ausführen, um den Zweig und umzuschalten und die README des Zweigs anzuzeigen, zu dem Sie wechseln.
Die README
, die von Chris J vorgeschlagen wird, kann funktionieren, vorausgesetzt, sie ist mit einem benutzerdefinierten Merge-Treiber eingerichtet, der in einem .gitattribute
definiert ist.
Auf diese Weise bleibt die local -Version der README
beim Zusammenführen immer erhalten.
Die "Beschreibung" für Verzweigungen wird auch als "Kommentar" bezeichnet, der den Metadaten zugeordnet ist, und wird nicht unterstützt.
Zumindest können Sie mit einer README
-Datei für jeden Zweig Folgendes tun:
$ git show myBranch:README
Wenn sich Ihr README im Stammverzeichnis Ihres REPO befindet, funktioniert es von einem beliebigen Pfad aus, da der von git show
verwendete Pfad ein absoluter Pfad aus dem obersten Verzeichnis des Repos ist.
Verwenden Sie git branch --edit-description
, um eine Zweigbeschreibung festzulegen oder zu bearbeiten.
Hier ist eine Shell-Funktion zum Anzeigen von Verzweigungen, die git branch
ähneln, jedoch mit angehängten Beschreibungen.
# Shows branches with descriptions
function gb() {
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 == $(git rev-parse --abbrev-ref HEAD) ]; then
branch="* \033[0;32m$branch\033[0m"
else
branch=" $branch"
fi
echo -e "$branch \033[0;36m$desc\033[0m"
done
}
So sieht gb
aus und wird hier als Text angezeigt, falls das Bild verfault:
$ gb
* logging Log order details. Waiting for clarification from business.
master
sprocket Adding sprockets to the parts list. Pending QA approval.
Und als Bild, damit Sie die Farben sehen können:
Hier gibt es zwei beliebte Vorschläge:
git branch --edit-description
: Das gefällt uns nicht, weil Sie es nicht schieben können. Vielleicht kann ich mich daran erinnern, was die von mir geschaffenen Niederlassungen tun, aber mein Team kann das nicht.README
file pr. Ast. Beim Zusammenführen ist dies ein schmerzhafter Vorgang: Super neigen dazu, Konflikte zusammenzuführen, und wir ziehen README
von Zweigen ab, wenn wir Feature-Zweige zusammenführen. Unterschiede zwischen den Ästen sind auch ein Schmerz.Wir haben uns entschieden, eine Orphan branches-readme
-Niederlassung zu schaffen. Verwaiste Niederlassungen sind Niederlassungen mit einer eigenen Geschichte - Sie kennen sie vielleicht aus den gh-pages
-Niederlassungen von Github. Dieser verwaiste Zweig enthält eine einzige README
-Datei. Es hat Inhalte wie:
master:
The default branch
mojolicious:
Start using Mojolicious
branch-whatever:
Description of the whatever branch
Es ist Push-fähig und verschmelzungsfreundlich. Zeigen Sie die Variable README
aus einem beliebigen Zweig an mit:
git show branches-readme:README
Nachteile sind, dass Sie den seltsamen Orphan-Zweig überprüfen müssen, wenn Sie die README
aktualisieren möchten und die README
nicht automatisch aktualisiert wird, da die Zweige umbenannt werden, kommen oder gehen. Das ist aber gut für uns.
Mach es wie:
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
Gleichermaßen können einzelne Teammitglieder auch eigene branches-$user
Orphan-Filialen erstellen, die ihre eigenen privaten Filialen beschreiben, sofern sie dies möchten, sofern sie dies nicht tun.
Mit weiteren Werkzeugen könnte dies auch in die Ausgabe von git branch
integriert werden. Zu diesem Zweck könnte möglicherweise eine README.yaml
-Datei anstelle einer einfachen README
betrachtet werden.
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'
Der Befehl definiert eine globale Option alias.about
als Shell-Ausdruck. Wenn Sie git about <branch>
in einem Repository ausführen, wird die Beschreibung der Verzweigung angezeigt, sofern festgelegt.
Hier ist eine mögliche Implementierung des git branches
-Befehls, auf den Greg Hewgill anspielte:
#!/usr/bin/Perl
sub clean {
map { s/^[\s\*]*\s// } @_;
map { s/\s*$// } @_;
return @_;
}
sub descr {
$_ = `git config [email protected]_.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";
}
Sie können Kommentare an Tags anhängen:
git tag -m 'this was a very good commit' tag1
Konventionell könnten Sie Tags haben, die sich auf Ihre Zweignamen beziehen, oder Tag -f verwenden, um ein kommentiertes Tag an der Spitze Ihrer Zweigzweige zu behalten.
Benutzen
git branch --list -v
um einen Upstream-Zweig zu zeigen:
git branch --list -vv
Fügen Sie -r
hinzu, um nur Fernbedienungen anzuzeigen, oder -a
, um Fernbedienungen und lokal anzuzeigen.
Hier ist eine git
alias
, mit der Sie Beschreibungen für den aktuellen Zweig festlegen und lesen können:
git config --global --add alias.about '!describe() { msg="$1"; git config branch."$(git rev-parse --abbrev-ref HEAD)".description ${msg:+"$msg"}; }; describe'
Verwendung/Beispiele:
(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
Besonderer Dank geht an @Felicio für die Antwort, mit der ich angefangen habe.
Ich bin mir ziemlich sicher, dass diese Funktion derzeit nicht unterstützt wird. Ich denke, Sie sollten am besten eine Beschreibungstextdatei erstellen, eine README im Zweig, die die gewünschten Informationen enthält.
Benutz einfach:
git config branch.<branch name>.description
Um Kredit zu geben, wenn der Kredit fällig ist: https://glebbahmutov.com/blog/git-branches-with-descriptions/
Die gewählte Antwort erscheint mir übertrieben. Ich würde geneigt sein, eine Beschreibungsdatei pro Zweig zu pflegen, bei der es sich um eine normale quellengesteuerte Datei handelt, beispielsweise master.txt
, dev.txt
usw., und wenn es eine unhandliche Anzahl oder Zweige gibt, würde ich eine Hierarchie erstellen, um sie besser zu organisieren.