답변:
git checkout master
트릭을해야합니다. 두 가지 버전으로 돌아가려면와 같이 말할 수 git checkout HEAD~2
있지만 그 시간을 기준 으로 임시 분기를 만드는 것이 좋습니다.git checkout -b temp_branch HEAD~2
git log
해당 지점에 상대적으로 표시됩니다. 그리고 마스터를 체크 아웃 할 때 포인터를 최신 버전의 마스터 브랜치로 옮깁니다.
git checkout
머리를 움직일 수있는 방법입니다. HEAD를 분리하면 주어진 커밋을 바로 가리키게됩니다. 마스터를 다시 체크 아웃하면 마스터를 다시 가리 킵니다. (그리고 많은 명령들은 git log
실제로 수정 범위를 취하는데, 기본값은 HEAD입니다.)
특정 커밋에 체크 아웃하면 git은 분리 된 분기를 만듭니다. 따라서 전화하면 :
$ git branch
다음과 같은 것을 보게 될 것입니다 :
* (detached from 3i4j25)
master
other_branch
마스터 브랜치 헤드로 돌아 오려면 마스터 브랜치에 다시 체크 아웃하면됩니다.
$ git checkout master
이 명령은 분리 된 분기를 자동으로 삭제합니다.
경우 git checkout
작동하지 않습니다 당신은 아마 나뭇 가지 사이에 충돌 수정 된 파일이 있습니다. 코드를 잃어 버리지 않게하려면 git 파일을 처리해야합니다. 세 가지 옵션이 있습니다.
수정 내용을 숨 깁니다 (나중에 팝업 가능).
$ git stash
분리 된 분기를 재설정하여 변경 사항을 폐기하십시오.
$ git reset --hard
이전 수정 사항으로 새 분기를 작성하고 커미트하십시오.
$ git checkout -b my_new_branch
$ git add my_file.ext
$ git commit -m "My cool msg"
그런 다음 마스터 브랜치 (가장 최신 버전)로 돌아갈 수 있습니다.
$ git checkout master
이것은 나를 위해 속임수를 썼다 (나는 여전히 마스터 브랜치에 있었다).
git reset --hard origin/master
방금 git을 더 깊이 파고 들기 시작했기 때문에 올바르게 이해하고 있는지 확실하지 않지만 OP의 질문에 대한 올바른 대답은 다음 git log --all
과 같은 형식 사양으로 실행할 수 있다고 생각합니다 git log --all --pretty=format:'%h: %s %d'
. 이것은 현재 체크 아웃 된 버전을 표시 (HEAD)
하며 목록에서 다음 버전을 가져올 수 있습니다.
BTW, .gitconfig
약간 더 나은 형식으로 이와 같은 별칭을 추가하면 다음을 실행할 수 있습니다 git hist --all
.
hist = log --pretty=format:\"%h %ai | %s%d [%an]\" --graph
상대 버전과 관련 하여이 게시물을 찾았 지만 이전 버전에 대해서만 이야기하지만 아마도 최신 버전을 언급 할 것이 없습니다.
여기에있는 답변 중 일부는 이전 커밋을 체크 아웃하기로 결정하기 전에 마스터 브랜치에 있다고 가정합니다. 항상 그런 것은 아닙니다.
git checkout -
마스터인지 아닌지에 관계없이 이전에 있던 지점으로 돌아갑니다.
git checkout hash2
후 git checkout hash1
, git checkout -
당신이 다시 걸릴 것입니다 hash1
.
이전 버전으로 돌아 가면
$ git checkout HEAD~2
Previous HEAD position was 363a8d7... Fixed a bug #32
이 상황에서도이 명령으로 기능 로그 (해시)를 볼 수 있습니다.
$ git log master --oneline -5
4b5f9c2 Fixed a bug #34
9820632 Fixed a bug #33
...
master
다른 지점 이름으로 바꿀 수 있습니다.
그런 다음 체크 아웃하면 기능으로 돌아갈 수 있습니다.
$ git checkout 4b5f9c2
HEAD is now at 4b5f9c2... Fixed a bug #34
Git 2.23+ (2019 년 8 월)에서는 혼란스러운 명령 git switch
대신 사용 하는 것이 가장 좋습니다 .git checkout
이전 버전을 기반으로 새 분기를 만들려면
git switch -c temp_branch HEAD~2
현재 마스터 브랜치로 돌아가려면
git switch master
더 우아하고 간단한 해결책은
git stash
가장 최근에 전송 된 지점 버전으로 돌아가 변경 사항을 숨김 상태로 저장하므로이 작업을 실행 취소하려면 다음을 수행하십시오.
git stash apply
git checkout master
정확히 지점에서 다시 전환하는 방법입니다. 그렇다면 이전 버전을 체크 아웃 할 때 본질적으로 브랜치를 생성한다는 의미입니까?