프로젝트를 진행하기전 Git을 협업에 지정없을 정도로 사용법을 익혔었고 프로젝트를 진행하면서도 사용에 더 익숙해졌었다. 그렇지만 어디까지나 협업에 크게 지정없는 정도로만 알고있었고, CLI 환경에 익숙하지 않아 인텔리제이나 다른 툴들이 제공해주는 GUI에 많이 의존하기도 했다.
인턴 생활이 확정되고 나서, 무엇을 공부할까 고민하다가 Git에 대해 제대로 공부해봐야겠다는 생각이 들었다. 프로젝트를 진행하다보니 Git의 다양한 기능들에 대해 잘 알고있는 팀원도 있었고, Git을 잘 이해하고 있다면 문제가 생겼을 때에도 더 잘 대처할 수 있을 것이라는 생각도 들었다.
그때 공부했던 내용들을 여기에 정리해보려고 한다.
git status
$ git status
git status 명령어를 이용하면 현재 작업 상태를 확인할 수 있다. 변경사항이 있는지 스테이징(Staging)된 변경사항이 있는지 등을 알 수 있다.
git add
# 모든 파일 스테이징 영역에 담기
$ git add .
# 특정 파일 스테이징 영역에 담기
$ git add [파일명]
git add 명령어는 프로젝트에서 일어난 변화를 버전에 담을 때 사용하는 명령어이다. 변경 내역이 스테이징 영역에 추가된다.
git commit
# 커밋하기 (vim 에디터 이용)
$ git commit
# 커밋 메시지와 함께 커밋
$ git commit -m "[커밋 메시지]"
# git add와 커밋 한 번에 하기
$ git commit -am "[커밋 메시지]"
git commit 명령어를 이용하여 새로운 버전을 만들 수 있다. 옵션들을 이용해 커밋 메시지와 함께 커밋을 하거나 스테이징과 커밋을 한 번에 할 수 있다.
git log
$ git log
git log 명령어를 이용하면 커밋 내역들을 확인할 수 있다. 커밋 메시지와 해시값등 여러 정보들을 확인할 수 있다.
git reset
커밋 내역을 되돌리고 싶을 때 reset 또는 revert 명령어를 사용할 수 있다.
reset의 경우는 이전 상태로 되돌아가 그 이후의 커밋 내역을 모두 되돌리는 경우 사용된다.
예를 들어, '1 -> 2 -> 3 -> 4 -> 5' 순서로 커밋이 되었다고 하자. 만약 3의 시점으로 되돌리고 싶다면, 커밋 3에 해당하는 커밋의 해시값을 이용해 reset을 하면 4, 5의 커밋이 사라지게 된다. 따라서 커밋 내역은 '1 -> 2 -> 3'이 되게 된다.
아래와 같이 여러 옵션들이 있으니 필요한 것을 이용하면 된다. 커밋의 해시값은 git log 명령어를 이용해 확인할 수 있다.
# 모든 작업 내역 되돌리고, 스테이징 영역도 비움
$ git reset --hard [커밋 해시값]
# 변경 사항을 스테이징 영역에서만 제거 (--mixed는 기본값이라 생략 가능)
$ git reset --mixed [커밋 해시값]
# 변경 사항을 저장소에서만 제거하고 스테이징 영역에 남겨둠
$ git reset --soft [커밋 해시값]
# 직전 커밋 내역 삭제
$ git reset --hard HEAD~1
마지막 줄 처럼 HEAD를 이용해서도 되돌릴 지점을 지정할 수 있다. HEAD란 현재 브랜치의 최신 커밋을 가리킨다고 보면 된다.
또한 reset은 사실 HEAD를 옮기는 작업이기 때문에 reset을 한다고 해서 추가로 커밋 내역이 남지 않는다.
git revert
revert는 새로운 커밋을 생성해 특정 커밋의 변경내역을 되돌릴 수 있는 명령어이다.
예를 들어, '1 -> 2 -> 3 -> 4 -> 5' 순서로 커밋이 되었다고 하자. 만약 3의 시점으로 되돌리고 싶다면 4, 5에 해당하는 커밋에 대한 revert를 진행하여 3의 시점으로 되돌릴 수 있다. 그렇게 될 경우 '1 -> 2 -> 3 -> 4 -> 5 -> 5 삭제 -> 4 삭제' 이런 식으로 커밋이 남게 된다.
그리고 특정 시점으로 되돌리는 것 뿐만 아니라 특정 커밋 내역만 되돌리고 싶을 수도 있다. 위의 예시에서 3의 커밋만 삭제하고 싶다면 '1 -> 2 -> 3 -> 4 -> 5 -> 3 삭제' 이렇게 3의 커밋만 되돌릴 수도 있다.
# 특정 커밋 되돌리는 커밋 만들기
$ git revert [되돌릴 커밋 해시값]
# 리버트를 하되 커밋은 남기지 않음
$ git revert --no-commit [되돌릴 커밋 해시값]
또한 --no-commit 옵션을 사용하면 변경 내역은 되돌려지지만 아직 커밋은 하지 않은 상태가 된다. 따라서 추가로 작업을 해서 커밋을 남길 수도 있다.
'Git·GitHub·Gitea' 카테고리의 다른 글
Git 명령어 총 정리 (4) (0) | 2024.12.13 |
---|---|
Git 명령어 총 정리 (3) (0) | 2024.12.12 |
Git 명령어 총 정리 (2) (0) | 2024.12.11 |
Gitea Container Registry 이용하기 (0) | 2024.12.09 |
Gitea Actions, Act Runner 이용하기 (0) | 2024.12.06 |