때때로 검사하거나 테스트하기 위해 이전 버전의 코드를 확인합니다. 이전 커밋을 수정하려는 경우 수행 할 작업에 대한 지침을 보았지만 변경하지 않았다고 가정합니다. 예를 들어 git checkout HEAD^
,을 마치면 지점 끝으로 돌아가는 방법은 무엇입니까? .. git log
더 이상 최신 커밋의 SHA를 표시하지 않습니다.
때때로 검사하거나 테스트하기 위해 이전 버전의 코드를 확인합니다. 이전 커밋을 수정하려는 경우 수행 할 작업에 대한 지침을 보았지만 변경하지 않았다고 가정합니다. 예를 들어 git checkout HEAD^
,을 마치면 지점 끝으로 돌아가는 방법은 무엇입니까? .. git log
더 이상 최신 커밋의 SHA를 표시하지 않습니다.
답변:
반환하려는 커밋이 일부 브랜치의 헤드이거나 태그가 지정된 것을 알고 있다면
git checkout branchname
또한 git reflog
HEAD (또는 다른 심판)가 과거에 지적한 다른 사항을 확인하는 데 사용할 수도 있습니다 .
추가하기 위해 편집 :
최신 버전의 Git에서는 한 번만 달리기 위해 달리 git checkout
거나 달리 움직일 HEAD
수 있다면
git checkout -
마지막 체크 아웃 이전의 위치로 다시 전환합니다. 이것은 쉘 관용구 cd -
에 비유하여 이전에 있던 작업 디렉토리로 돌아가는 동기에 의해 동기 부여되었습니다 .
master
실제로 어떤 종류의 키워드도 아닙니다 HEAD
. 새 저장소의 기본 분기 이름 일뿐입니다. git branch
저장소의 브랜치 git tag -l
목록과 태그 목록을 얻기 위해 실행할 수 있습니다 . 마찬가지로 origin
리포지토리가 복제되는 원격의 기본 이름이지만 특별한 것은 없습니다.
git reflog
사용할 수있는 해시 목록을 제공합니다 git checkout [commit-hash]
.
지금 바로이 질문에 와서 추가 할 내용이 있습니다.
가장 최근의 커밋으로 이동하려면
git checkout $(git log --branches -1 --pretty=format:"%H")
설명:
git log --branches
모든 로컬 브랜치의 커밋 로그
-1
를 하나의 커밋으로 제한 → 가장 최근의 커밋
--pretty=format:"%H"
형식
git checkout $(...)
으로 서브 쉘의 커밋 해시 사용 출력 만 체크 아웃의 인수로 표시
노트 :
그러나 커밋에 직접 체크 아웃하기 때문에 헤드가 분리됩니다. sed
아래 설명 된를 사용하여 분기 이름을 추출하면이를 피할 수 있습니다 .
가장 최근의 커밋 지점으로 이동하려면 :
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
설명:
git log --branches
쇼는 모든 지역의 가지에서 커밋 로그
-1
한 가장 최근의 커밋 → 커밋에 제한
--pretty=format:"%D"
에만 형식을 심판 이름을 표시
| sed 's/.*, //g'
모두 무시하지만 여러 심판의 마지막 (*)
git checkout $(...)
체크 아웃에 대한 인수로 서브 쉘의 사용 출력
*) HEAD 및 원격 분기가 먼저 나열되고 로컬 분기는 알파벳순으로 내림차순으로 나열되므로 나머지는 알파벳순으로 첫 번째 분기 이름이됩니다.
노트 :
커밋에 대해 여러 개가있는 경우 항상 알파벳순으로 첫 번째 분기 이름을 사용합니다.
어쨌든, 가장 좋은 해결책은 가장 최근의 커밋에 대한 참조 이름을 표시하여 체크 아웃 할 위치를 아는 것입니다.
git log --branches -1 --pretty=format:'%D'
예를 들어 git top
해당 명령 의 별명 을 작성하십시오 .
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
그래픽 GUI를 살펴보십시오 ... gitk
모든 커밋이 표시됩니다. 때로는 그래픽 작업이 더 쉽습니다 ... ^^
모든 분기를 표시하고 커밋
git log --branches --oneline
마지막 커밋 자식 로그 표시
--branches -1 --oneline
마지막 커밋 자식 로그 앞에 표시
--branches -2 --oneline
당신은 간단하게 할 수 있습니다 git pull origin branchname
. 최신 커밋을 다시 가져옵니다.
git log
질문 의 문장과 관련하여 언제든지git log --all
(또는 더 유용하게git log --oneline --graph --all
) 실행할 수 있습니다 .