2011-03-01 20 views

Respuesta

21

git checkout @{-1} que se puede abreviar a git checkout -.

From the manpage:

Como caso especial, la "@ {- N}" sintaxis para enésimo cheques última rama a cabo la rama (en lugar de separar). Usted también puede especificar - que también es con "@ {- 1}".

+1

Esto es increíble! +1 por esa simple manera. – eckes

+1

¿En qué versión de git puedes hacer 'git checkout -1'? No funciona en git 1.7.1 y la página man dice que 'git checkout -' es equivalente a' git checkout @ {- 1} ' –

+0

@Mark Longair: ninguna. Yo extraví. Gracias por señalar eso. Lo arreglaré. – wnoise

0

En su guión, salvo en primer lugar la rama actual (como escrito en this answer):

branch_name="$(git symbolic-ref HEAD 2>/dev/null)" || 
branch_name="(unnamed branch)"  # detached HEAD 
branch_name=${branch_name##refs/heads/} 

luego ir, y obtenga la etiqueta que desea

git checkout -b tag_branch tag_name 

Haz lo que quiere hacer en esa rama, luego revisa la rama anterior otra vez:

Eso es todo.

3

EDIT: sugerencia de wnoise funcionará si no desea mantener un historial explícita la forma pushd/popd hace. Si lo hace (y no quiere que un checkout normal afecte su LRU):

No sé de nada que haga lo que quiera de la caja, pero no es difícil armar algo junto con esas líneas Si agrega un archivo llamado git-foo a su RUTA, obtiene un nuevo comando git foo. Así, git-pushd podría ser así:

#!/bin/bash 

SUBDIRECTORY_OK=1 
. $(git --exec-path)/git-sh-setup 

git symbolic-ref HEAD | sed s_refs/heads/__ >> $GIT_DIR/.pushd 
git checkout "[email protected]" 

Y git-popd:

#!/bin/bash 

SUBDIRECTORY_OK=1 
. $(git --exec-path)/git-sh-setup 

REF=$(head -n1 $GIT_DIR/.pushd) 

[ -n "$REF" ] || die "No refs to pop" 
git checkout "$REF" && sed -i -e '1d' $GIT_DIR/.pushd 
Cuestiones relacionadas