wake-up-neo.com

Zweigbeschreibungen in Git

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. 

245
Noufal Ibrahim

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.

173
Greg Hewgill

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.

38
tta

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.

28
VonC

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:

 enter image description here

25
jsageryd

Hier gibt es zwei beliebte Vorschläge:

  1. 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.
  2. 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.

10
Peter V. Mørch
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.

8
Felicio

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";
}
5
Owen

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.

2
Jamey Hicks

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.

1
Markus Hartman

Hier ist eine gitalias, 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.

1
Wayne Burkett

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.

0
Chris J

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/

0
Caleb Miller

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.

0
pajato0