프로그래밍/Python

[Git] 특정 커밋(commit)로 이동하기 - checkout

채윤아빠 2021. 5. 28. 11:53
728x90
반응형

git 커밋(commit) 이력 확인

이동할 특정 커밋을 확인하기 위하여 커밋 이력을 확인해야할 때, "log" 명령을 이용합니다.

$ git log
commit 7a0ad29e32bf05c56fa5039249d7a40d7f0a6d63 (HEAD -> master, origin/master, origin/HEAD)
Author: Wonhee Han 
Date:   Sat Mar 2 17:40:21 2021 +0900

    ADD: about NaN

commit 66ca530eff53437da4cda20a8c0f764cfe5c8b3f
Author: Wonhee Han 
Date:   Mon Nov 27 22:50:43 2020 +0900

    수정: 서버에서 API 호출하는 방식으로 복구

commit b4c3d555521692266628bbfba9c6250b605e394f
Author: Wonhee Han 
Date:   Thu Nov 23 16:29:06 2020 +0900

    MOD: fetch_device_status()

git 특정 커밋(commit)로의 이동 : checkout

"git log" 명령으로 이동할 커밋(commit)를 찾았다면, "checkout" 명령을 이용하여 해당 커밋으로 이동(restore)할 수 있습니다.

$ git checkout 66ca530eff53437da4cda20a8c0f764cfe5c8b3f
Note: switching to '66ca530eff53437da4cda20a8c0f764cfe5c8b3f'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c 

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 66ca530 수정: 서버에서 API 호출하는 방식으로 복구

"git log" 명령으로 현재의 HEAD 상태를 확인해 보면 다음과 같습니다.

commit 66ca530eff53437da4cda20a8c0f764cfe5c8b3f (HEAD)
Author: Wonhee Han 
Date:   Mon Nov 27 22:50:43 2020 +0900

    수정: 서버에서 API 호출하는 방식으로 복구

commit b4c3d555521692266628bbfba9c6250b605e394f
Author: Wonhee Han 
Date:   Thu Nov 23 16:29:06 2020 +0900

    MOD: fetch_device_status()

commit f271c1a495965df6a0ccfff424eea404ab81f4db
Author: Wonhee Han 
Date:   Thu Nov 23 15:38:28 2020 +0900

    fetch 함수 정리중

다시 가장 최신 커밋(commit)로 이동할 경우에는 해당 커밋 ID를 입력해도 되지만, 간단하게 "-"로 입력하여도 동일하게 최신 커밋으로 이동합니다.

$ git checkout -
Previous HEAD position was 66ca530 수정: 서버에서 API 호출하는 방식으로 복구
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

참고로 "checkout"으로 브랜치 이동도 가능하지만, 브랜치의 이동은 "switch" 명령을 이용할 것을 권장하고 있습니다.


참고자료