본문 바로가기

나만의 모음집

git 명령어를 모아두는 아카이브

반응형

이 포스트는..

 해당 포스트는 자주 사용되는 git 명령어와 그 예시를 저장해두는 용도로 활용하는 포스트 입니다. 기타 문서에 정리해둔 내용을 옮기거나, 새롭게 알게된 지식을 쌓아가며 추후 활용하기 쉽도록 목록화시키기 위한 목적으로 사용됩니다. 매번 새로운 내용으로 갱신될 때 마다 그 날짜를 기준으로 포스트가 갱신됩니다.

 

최근 커밋 취소

git reset --soft HEAD~1

 최신 커밋을 취소하고 변경 사항을 스테이징 영역에 유지합니다. 변경 사항은 커밋되지 않은 채로 남아 있습니다.

git reset --soft HEAD~1

 

git reset --mixed HEAD~1 (기본 옵션)

최신 커밋을 취소하고 변경 사항을 스테이징 영역에 제거합니다. 변경 사항은 작업 디렉토리에 유지됩니다.

git reset --mixed HEAD~1

 

기본 옵션이므로  --mixed 를 명시하지 않아도 동일한 동작을 수행합니다.

 

git reset --hard HEAD~1

최신 커밋을 취소하고 변경 사항을 스테이징 영역 및 작업 디렉토리에서 모두 제거합니다. 변경 사항은 완전히 삭제됩니다. 제일 주의해야 합니다. 이 때 까지 작업한 내용들이 싸악 사라집니다. vscode 내에서는 타임라인을 사용해서 일일이 파일 복구는 가능할 수는 있습니다.

git reset --hard HEAD~1

 

 

git commit 메시지 변경

로컬에서 커밋된 상태

로컬에서 커밋된 상태라면 비교적 간단하게 커밋 메시지를 변경할 수 있습니다.  아래와 같이 git commit --amend 명령어를 입력하면 vi 편집창이 뜹니다.

git commit --amend

 

 

그 후 키보드 [ i ] 키를 누르면 하단에 -- 끼워넣기 -- 라는 메시지가 표시되고, 그 뒤에는 키보드 조작을 통해서 상단에 fix/ 로 시작되는 최신 커밋 메시지를 직접 수정할 수 있습니다.

 

 

수정을 완료했다면 키보드 [ Esc ] 를 누르시고,    :wq  을 차례대로 입력하시면 vi 편집창에서 나가면서 수정 내용을 커밋 메시지에 반영하게 됩니다.

 

커밋를 원격 저장소에 Push 한 경우

만일 커밋한 메시지를 토대로 원격 저장소(git 허브 등)에 푸쉬하셨다면, 앞서 방법으로는 변경할 수 없습니다.  이는 원격 저장소의 히스토리를 변경하는 작업이므로 만일 다양한 팀원과 함께 공동으로 작업하는 경우 충돌을 발생시킬 수 있습니다.  따라서 기본적으로는 이 방법을 바로 시도하지 못하게 막아두고 있습니다.

 

다만 강제로 변경하는 방법이 있는데, 앞서 방법과 동일하게 커밋 메시지를 로컬에서 변경하고, 추가로 git push --force 를 입력하는 겁니다.

 

git commit --amend # 수정 후

git push --force # 강제로 원격 저장소의 커밋 메시지를 로컬 수정본으로 변경합니다.

 

해당 방법은 매우 신중해야 하므로, 팀 프로젝트를 하고 있다면, 이에 대한 상황을 공유하여 커밋 메시지 변경을 이어 가야 합니다.

반응형