una - Descripciones de ramas en git
que es una rama en git (12)
Aquí hay dos sugerencias populares:
-
git branch --edit-description
: No nos gusta esto porque no puedes presionarlo. Tal vez pueda recordar lo que hacen las ramas que creé, pero mi equipo no puede. - Archivo
README
pr. rama. Esto es un problema durante las combinaciones: súper propensos a fusionar conflictos y estaremos obteniendoREADME
de las sucursales cuando combinemos las entidades principales. Las diferencias entre las ramas también son un dolor.
Hemos decidido crear una branches-readme
huérfana branches-readme
. Las ramas huérfanas son ramas con su propia historia, puede que las conozca de las ramas de las gh-pages
de Github. Esta rama huérfana contiene un solo archivo README
. Tiene contenidos como:
master:
The default branch
mojolicious:
Start using Mojolicious
branch-whatever:
Description of the whatever branch
Es capaz de empujar y fusionar. Ver el README
desde cualquier rama con:
git show branches-readme:README
Las desventajas son que necesita retirar la rama huérfana extraña cuando desea actualizar el README
y el README
no se actualiza automáticamente a medida que las sucursales se renombran, vienen o van. Eso está bien para nosotros, sin embargo.
Hazlo como
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
De manera similar, los miembros individuales del equipo también pueden crear sus propias branches-$user
ramas huérfanas de branches-$user
describen sus propias sucursales privadas si así lo desean, siempre que no las empujen al equipo.
Con herramientas adicionales, esto también podría integrarse con la salida de la git branch
. A tal fin, tal vez podría considerarse un archivo README.yaml
lugar de un README
simple.
¿Hay alguna manera en git para tener una ''descripción'' para las sucursales? Mientras trato de usar nombres descriptivos, trabajar por un tiempo en una sola rama a veces reduce mi memoria de por qué hice algunas de las otras ramas temáticas. Intento usar nombres descriptivos para las ramas, pero creo que una "descripción" (breve nota sobre el propósito de la rama) sería agradable.
Aquí hay una posible implementación del comando git branches
branch al que Greg Hewgill aludió:
#!/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";
}
El README
sugerido por Chris J puede funcionar, siempre que esté configurado con un controlador de fusión personalizado definido en un .gitattribute
.
De esa manera, la versión local del README
siempre se conserva durante las fusiones.
La "descripción" de las sucursales también se conoce como un "comentario" asociado con esos metadatos y no es compatible.
Al menos, con un archivo README
, puede, para cualquier rama, hacer lo siguiente:
$ git show myBranch:README
Si su README está en el directorio raíz de su REPO, funcionará desde cualquier ruta, ya que la ruta utilizada por git show
es absoluta desde el directorio superior de dicho repositorio.
Estoy bastante seguro de que esa característica no es compatible actualmente. Creo que lo mejor que puede hacer es crear un archivo de texto de descripción, un README básicamente, en la rama que tiene la información que desea.
Git 1.7.9 apoya esto. De las notas de la versión 1.7.9 :
* "git branch --edit-description" can be used to add descriptive text to explain what a topic branch is about.
Puede ver esa característica introducida en septiembre de 2011, con confirmaciones 6f9a332 , 739453a3 , b7200e8 :
struct branch_desc_cb {
const char *config_name;
const char *value;
};
--edit-description::
Abra un editor y edite el texto para explicar para qué sirve la rama, para que lo utilicen otros comandos (por ejemplo,
request-pull
).
Tenga en cuenta que no funcionará para una rama HEAD separada.
Esa descripción es utilizada por el script request-pull: vea commit c016814783 , pero también git merge --log
.
request-pull
es un script utilizado para resumir los cambios entre dos confirmaciones en la salida estándar e incluye la URL dada en el resumen generado.
[De @AchalDave] Desafortunadamente, no puede incluir descripciones ya que están almacenadas en su configuración, por lo que no sirve para documentar sucursales en un equipo.
La respuesta seleccionada me parece una exageración. Me sentiría inclinado a mantener un archivo de descripción por rama que sea un archivo de fuente normal controlada, por ejemplo, dev.txt
, dev.txt
, etc. y si hay un número o ramas difíciles de manejar, crearía una jerarquía para organizarlo mejor .
Puedes adjuntar comentarios a las etiquetas:
git tag -m ''this was a very good commit'' tag1
Por convención, podría tener etiquetas relacionadas con los nombres de sus sucursales o podría usar la etiqueta -f para mantener una etiqueta comentada al principio de sus ramas temáticas.
Si terminas usando README, crea un alias git checkout
modificando git checkout
para que tu README se muestre cada vez que cambies de rama.
Por ejemplo, agregue esto en ~ / .gitconfig, bajo [alias]
cor = !sh -c ''git checkout $1 && cat README'' -
Después de esto, puede ejecutar git cor <branch_name>
para cambiar de rama y mostrar el README de la rama a la que está cambiando.
Solo usa:
git config branch.<branch name>.description
Para otorgar crédito a quien se debe: https://glebbahmutov.com/blog/git-branches-with-descriptions/
Use git branch --edit-description
para establecer o editar una descripción de rama.
Aquí hay una función de shell para mostrar ramas similares a las de git branch
pero con las descripciones adjuntas.
# 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
}
A continuación se muestra el aspecto de gb
, que se muestra aquí como texto en caso de que la imagen se pudra:
$ gb
* logging Log order details. Waiting for clarification from business.
master
sprocket Adding sprockets to the parts list. Pending QA approval.
Y como imagen, para que puedas ver los colores:
utilizar:
git branch --list -v
para mostrar la rama aguas arriba:
git branch --list -vv
agregue -r
para mostrar solo los controles remotos o -a
para mostrar los controles remotos y locales
git config --global --add alias.about ''!describe() { git config branch."$1".description; }; describe''
El comando definirá una opción global alias.about
como expresión de shell. La ejecución de git about <branch>
en un repositorio mostrará la descripción de la rama, si está configurada.