이전 커밋을 체크 아웃 한 후 최신 커밋으로 돌아가는 방법은 무엇입니까? 커밋을 수정하려는 경우

때때로 검사하거나 테스트하기 위해 이전 버전의 코드를 확인합니다. 이전 커밋을 수정하려는 경우 수행 할 작업에 대한 지침을 보았지만 변경하지 않았다고 가정합니다. 예를 들어 git checkout HEAD^,을 마치면 지점 끝으로 돌아가는 방법은 무엇입니까? .. git log더 이상 최신 커밋의 SHA를 표시하지 않습니다.



답변

반환하려는 커밋이 일부 브랜치의 헤드이거나 태그가 지정된 것을 알고 있다면

git checkout branchname

또한 git reflogHEAD (또는 다른 심판)가 과거에 지적한 다른 사항을 확인하는 데 사용할 수도 있습니다 .


추가하기 위해 편집 :

최신 버전의 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>>