나는 일종의 cd -
git 과 동등한 것을 원한다 . 내가 지점에 master
있고 체크 아웃하는 경우 foo
, git checkout -
돌아가고 싶은 것과 같은 master
것을 입력하고 다시 입력하기 위해 다시 입력 할 수 있기를 바랍니다 foo
.
이와 같은 것이 있습니까? 구현하기가 어려울까요?
gc-
그 속기 또는이었다git checkout -
나는 일종의 cd -
git 과 동등한 것을 원한다 . 내가 지점에 master
있고 체크 아웃하는 경우 foo
, git checkout -
돌아가고 싶은 것과 같은 master
것을 입력하고 다시 입력하기 위해 다시 입력 할 수 있기를 바랍니다 foo
.
이와 같은 것이 있습니까? 구현하기가 어려울까요?
gc-
그 속기 또는이었다git checkout -
답변:
로부터 1.6.2에 대한 릴리스 노트
@{-1}
마지막 지점을 참조하는 방법입니다. 이것은
객체 이름이 예상되는 곳뿐만 아니라 지점 이름이 예상되는 곳이면 어디서나 받아 들여지며 지점 이름을 입력 한 것처럼 작동합니다.
예를 들면git branch --track mybranch @{-1}
,git merge @{-1}
그리고
git rev-parse --symbolic-full-name @{-1}
예상대로 작동합니다.
과
git checkout -
의 속기입니다git checkout @{-1}
.
error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
@{u}
현재 브랜치의 업스트림 브랜치 인을 자주 사용 합니다. git log @{u}..
아직 풀링되지 않은 업스트림 커밋을 나열하는 경우에 매우 유용합니다 . 그리고 git log ..@{u}
아직 밀리지 않은 로컬 커밋 인 대화 .
요즘이 작업을 수행하는 가장 간단한 방법은 다음과 같습니다.
git checkout -
...의 별칭입니다 :
git checkout @{-1}
이것에 대해 더 알고 싶다면 여기에 전체 기사를 썼습니다 : Check in The Previous Branch In Git .
for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] }
. bash에서는 동등한 것을 작성해야합니다 (reflog를 가져 와서 ": checkout :"문자열을 포함하는 행으로 필터링 한 다음 분기 이름을 추출하십시오). 이것은 실제로 git이하는 일입니다
이전 답변에 더 자세한 내용을 추가하여 git checkout @{-N}
작동 방식을 이해하십시오 . 체크 아웃 기록을 검사하기 위해 reflog를 밟습니다. 따라서 비슷한 것을 구현하려면 라인 을 git reflog
찾는 결과를 구문 분석 할 수 있어야합니다 checkout:
. git 소스의 구현 sha1_name.c
, 특히 함수를 확인할 수 있습니다 interpret_nth_prior_checkout
.
힘내 버전 은 그 (그리고 더 많은)를 할 수 2.23
있는 git switch
명령을 도입했습니다 . 공식 문서 인용 :
지정된 지점으로 전환하십시오. 작업 트리와 색인은 분기와 일치하도록 업데이트됩니다. 모든 새로운 커밋이이 브랜치의 끝에 추가됩니다.
특정한 경우 git switch -
이전에 있던 지점으로 돌아가도록 발행 할 수 있습니다 . 동일한 명령을 다시 실행하여 첫 번째 분기로 돌아갈 수 있습니다.
PS 그것은 당신이 이미 (난 당신이 질문을 이후 7 년이있어 의미) 그렇게하는 방법을 알고하지 않는 것이 아니지만, 공통의 해결이 명령이 적은 초보자 혼란과 친절 혼란을 사용할 때 발생한다 git checkout
.
나는 이전 지점을 체크 아웃하는 것과 같은 생각 으로이 질문에 착륙했습니다. 에서 ohmyz 를 사용 하고 Mac
있습니다. 아래 명령이 도움이되었습니다.
$ gco -
$ git checkout -
gco
이 짧은 작성 방법으로 정의 하기 때문에 작동 합니다 git checkout
. 그래서 gco -
그냥 호출 git checkout -
.
git checkout -
. 안전 장치가 업데이트되었습니다.
다음은 다른 답변에서 제공하는 솔루션 git checkout -
과 git checkout @{-1}
솔루션 을 설명하는 Git 문서 부분에 대한 포인터입니다 .
모든 명령에 대해 Git 개정판을 지정할 때 @{-<n>}
, 예를 들어@{-1}
"현재 n 번째 분기 / 커밋이 체크 아웃되기 전에 체크 아웃 됨 "을 의미합니다 . 다음과 같이 git checkout <branch>
반복해서 설명합니다. " @{-N}
구문을 사용하여 git checkout
작업 을 사용하여 체크 아웃 한 N 번째 마지막 분기 / 커밋을 참조 할 수 있습니다 ."
의 <branch>
인수에git checkout
-
대해 ' @{-1}
' ' 과 동의어 인 ' '을 지정할 수도 있습니다 . "