때때로 검사하거나 테스트하기 위해 이전 버전의 코드를 확인합니다. 이전 커밋을 수정하려는 경우 수행 할 작업에 대한 지침을 보았지만 변경하지 않았다고 가정합니다. 예를 들어 git checkout HEAD^
,을 마치면 지점 끝으로 돌아가는 방법은 무엇입니까? .. git log
더 이상 최신 커밋의 SHA를 표시하지 않습니다.
답변
반환하려는 커밋이 일부 브랜치의 헤드이거나 태그가 지정된 것을 알고 있다면
git checkout branchname
또한 git reflog
HEAD (또는 다른 심판)가 과거에 지적한 다른 사항을 확인하는 데 사용할 수도 있습니다 .
추가하기 위해 편집 :
최신 버전의 Git에서는 한 번만 달리기 위해 달리 git checkout
거나 달리 움직일 HEAD
수 있다면
git checkout -
마지막 체크 아웃 이전의 위치로 다시 전환합니다. 이것은 쉘 관용구 cd -
에 비유하여 이전에 있던 작업 디렉토리로 돌아가는 동기에 의해 동기 부여되었습니다 .
답변
자식 체크 아웃 마스터
마스터는 팁 또는 마지막 커밋입니다. gitk 는 당신이 나무의 현재 위치까지 보여줄 것입니다. git reflog 는 모든 커밋을 표시하지만이 경우 팁을 원하므로 git checkout master입니다.
답변
지금 바로이 질문에 와서 추가 할 내용이 있습니다.
가장 최근의 커밋으로 이동하려면
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
해당 명령 의 별명 을 작성하십시오 .
답변
그래픽 GUI를 살펴보십시오 … gitk
모든 커밋이 표시됩니다. 때로는 그래픽 작업이 더 쉽습니다 … ^^
답변
이를 위해 다음 git 명령 중 하나를 사용할 수 있습니다.
git checkout master
git checkout branchname
답변
모든 분기를 표시하고 커밋
git log –branches –oneline
마지막 커밋 자식 로그 표시
–branches -1 –oneline
마지막 커밋 자식 로그 앞에 표시
–branches -2 –oneline
답변
git reflog //find the hash of the commit that you want to checkout
git checkout <commit number>>