2011-03-01 2 views

답변

21

git checkout @{-1}이며, 이는 git checkout -으로 축약 될 수있다.

특별한 경우는 "@ {- N}"로

From the manpage: N 번째 브랜치 마지막 체크 아웃 (대신 탈착) 분기 구문 . 도 지정할 수 있습니다. - 동의어는 "@ {- 1}"인 입니다.

+1

이 굉장 :

#!/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]" 

그리고 git-popd : 같은, git-pushd는 볼 수 있었다! 그 간단한 방법 +1. – eckes

+1

'git checkout -1' 명령을 git의 어느 버전에서 할 수 있습니까? 이것은 git 1.7.1에서 작동하지 않으며 man 페이지는'git checkout-'이'git checkout @ {- 1}'과 같습니다. –

+0

@Mark Longair : None. 나는 잘못 생각했다. 그 점을 지적 해 주셔서 감사합니다. 나는 그것을 고쳐 줄 것이다. – wnoise

0

, 첫 번째 (this answer 작성 등) 현재의 지점 저장 : 다음

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

이동하고 당신이 수행 할 작업을 수행

git checkout -b tag_branch tag_name 

에 원하는 태그를 체크 아웃 해당 지점을 다시 체크 아웃하면 이전 지점을 다시 체크 아웃합니다.

git checkout $branch_name 

그게 전부입니다.

3

편집 : 당신이 방법 PUSHD/popd 명령이하는 명시 적으로 기록을 보존하지 않으려면 wnoise의 제안이 작동합니다. 만약 당신이 (그리고 보통의 checkout가 당신의 LRU에 영향을 미치기를 원하지 않는다면) :

나는 당신이 원하는대로 할 수있는 것을 모릅니다. 그러나 뭔가 함께 해킹하기가 어렵지 않습니다. 그 라인들. git-foo 파일을 PATH에 추가하면 새로운 git foo 명령이 나타납니다.

#!/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 
관련 문제