tipos tag remote remota rama etiquetas crear cambiar git branch git-branch remote-branch

tag - ¿Cómo enumero todas las sucursales remotas en Git 1.7+?



git remote (15)

Asegúrese de que el origen remoto que está listando es realmente el repositorio que desea y no un clon anterior.

He intentado git branch -r , pero eso solo enumera las ramas remotas que he rastreado localmente. ¿Cómo encuentro la lista de los que no tengo? (No me importa si el comando enumera todas las ramas remotas o solo aquellas que están sin seguimiento).


Con GitBash, puedes usar:

rama git -a


El mejor comando para ejecutar es git remote show [remote] . Esto mostrará todas las sucursales, remotas y locales, rastreadas y sin seguimiento.

Aquí hay un ejemplo de un proyecto de código abierto:

> git remote show origin * remote origin Fetch URL: https://github.com/OneBusAway/onebusaway-android Push URL: https://github.com/OneBusAway/onebusaway-android HEAD branch: master Remote branches: amazon-rc2 new (next fetch will store in remotes/origin) amazon-rc3 new (next fetch will store in remotes/origin) arrivalStyleBDefault new (next fetch will store in remotes/origin) develop tracked master tracked refs/remotes/origin/branding stale (use ''git remote prune'' to remove) Local branches configured for ''git pull'': develop merges with remote develop master merges with remote master Local refs configured for ''git push'': develop pushes to develop (local out of date) master pushes to master (up to date)

Si solo queremos obtener las sucursales remotas, podemos usar grep . El comando que quisiéramos usar sería:

grep "/w*/s*(new|tracked)" -E

Con este comando:

> git remote show origin | grep "/w*/s*(new|tracked)" -E amazon-rc2 new (next fetch will store in remotes/origin) amazon-rc3 new (next fetch will store in remotes/origin) arrivalStyleBDefault new (next fetch will store in remotes/origin) develop tracked master tracked

También puedes crear un alias para esto:

git config --global alias.branches "!git remote show origin | grep /w*/s*(new|tracked) -E"

Entonces puedes correr solo git branches .


El uso de git branch -r enumera todas las sucursales remotas y git branch -a enumera todas las sucursales en local y remoto. Estas listas se desactualizan sin embargo. Para mantener estas listas actualizadas, ejecute

git remote update --prune

que actualizará su lista de sucursales locales con todas las nuevas desde el control remoto y eliminará las que ya no estén allí. Al ejecutar este comando de actualización sin la --prune se recuperarán nuevas sucursales pero no se eliminarán las que ya no se encuentran en el control remoto.

Puede acelerar esta actualización especificando un control remoto; de lo contrario, extraerá las actualizaciones de todos los controles remotos que haya agregado.

git remote update --prune origin


La forma más sencilla que encontré:

git branch -a


Pero

git branch -ar

Deberías hacerlo.



También puedes hacer git fetch seguido de una git branch -r . Sin fetch no verás las ramas más actuales.


Terminé haciendo una tubería de shell de desorden para obtener lo que quería, simplemente fusioné las ramas del control remoto de origen:

git branch -r --all --merged / | tail -n +2 / | grep -P ''^ remotes/origin/(?!HEAD)'' / | perl -p -e ''s/^ remotes//origin////g;s/master/n//g''


Utilizando este comando,

git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n" CommitID : 27385d919 Remote Branch : (origin/ALPHA) Commit Message : New branch created

Enumere todas las sucursales remotas, incluidos los mensajes de confirmación, ID de confirmación que son referidos por sucursales remotas


tratar

git branch -at


remote show muestra todas las sucursales en el control remoto, incluidas las que no se rastrean localmente e incluso las que aún no se han recuperado.

git remote show <remote-name>

También intenta mostrar el estado de las sucursales en relación con su repositorio local:

> git remote show origin * remote origin Fetch URL: C:/git/./remote_repo.git Push URL: C:/git/./remote_repo.git HEAD branch: master Remote branches: branch_that_is_not_even_fetched new (next fetch will store in remotes/origin) branch_that_is_not_tracked tracked branch_that_is_tracked tracked master tracked Local branches configured for ''git pull'': branch_that_is_tracked merges with remote branch_that_is_tracked master merges with remote master Local refs configured for ''git push'': branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable) master pushes to master (up to date)


Para la gran mayoría [1] de visitantes aquí, la respuesta más sencilla y correcta a la pregunta "¿Cómo enumero todas las sucursales remotas en Git 1.7+?" es:

git branch -r

Para una pequeña minoría [1] git branch -r no funciona. Si git branch -r no funciona, intente:

git ls-remote --heads <remote-name>

Si git branch -r no funciona, entonces tal vez como Cascabel dice "ha modificado el refspec predeterminado, de modo que git fetch y git remote update no recuperen todas las sucursales del remote " .

[1] Al momento de escribir esta nota de pie de página 2018-febrero, miré los comentarios y observé que la git branch -r funciona para la gran mayoría (alrededor del 90% o 125 de 140 ).

Si git branch -r no funciona, verifique git config --get remote.origin.fetch contiene un comodín ( * ) según esta respuesta


TL; TR;

Esta es la solución de su problema:

git remote update --prune # To update all remotes git branch -r # To display remote branches

o:

git remote update --prune # To update all remotes git branch <TAB> # To display all branches


git branch -a | grep remotes/*