git으로 버전과리를 하고 커밋 단위별로 관리되기 때문에 누가 작성했는지는 굉장히 중요합니다.
git을 사용하다보면 작성 내용이나 작성자를
변경하고 싶은경우가 있거나 커밋 이력을 제거하고 싶을 때 사용하는 방법입니다.
커밋만 했을 경우와 푸시까지 했을 경우에는 차이가 있습니다.
commit만 했을 경우
아래 명령어로 변경할 수 있습니다.
> git commit --amend --author="otrodevym@gmail.com"
push까지 했을 경우
로컬과 원격지에 이미 반영되어 있고 잘못 커밋한 내역도 없애고 싶은 경우에는 rebase
를 이용합니다.
1. 변경할 커밋 바로 이전의 커밋 해시값 찾기
git log로 커밋 내용과 해시값을 확인합니다.
예를 들어 commit 2f69a1daebea2dfabbd3148a8b229a6d81be9d2d
수정하고 싶은 해시값을 찾고
직전 해시 값인 commit 99551282f69fc880b7ab94fee98a563cddf7bd57
를 확인합니다.
> git log
2. git rebase -i입력
rebase를 이용해 수정하기 위해 아래 명령어를 입력합니다.
수정하고 있는 내용이 있으면 아래와 같은 에러가 발생합니다.
> git rebase -i 99551282f69fc880b7ab94fee98a563cddf7bd57
입력하면 아래 사진과 같이 pick 해시값 커밋내용
형태로 표시됩니다.
사용 설명처럼 pick -> e 로 수정하고 :wq
로 저장합니다.
3. git commit --amend --author=작성자
작성자를 변경하기 위해 아래 명령어를 입력합니다.
> git commit --amend --author="otrodevym__ <otrodevym__@gmail.com>"
명령어를 입력하면 변경 사항이 적용된걸 확인할 수 있습니다.
다시 wq로 나오면 변경된 파일 혹은 기존 커밋되었던 내용들이 다시 적용되는걸 확인할 수 있습니다.
4. 로컬 반영
아래 명령어로 rebase
를 종료합니다.
> git rebase --continue
5. 원격지에 반영
-f를 사용하거나 +브런치 로 강제 진행할 수 있습니다.
> git push origin -f master
> git push origin +master
반영된걸 확인할 수 있습니다.
6. 반영 사항을 다시 되돌리는 방법 : reflog
방금 rebase했던 내용이 알고보니 잘못되었고 처음에 작성한게 맞다면
되돌려야 하며 이때 사용하는 명령어가 reflog가 있습니다.
6-1. reflog로 과거 내역 보기
아래 명령어를 찾으면 작업한 내역을 확인할 수 있습니다.
> git reflog
6-2. reset으로 원하는 시점으로 돌아가기
원하는 시점은 2f69a1d
로 이 글의 처음 해시값입니다.
> git reset --hard 2f69a1d
'개발(합니다) > TOOL' 카테고리의 다른 글
[Windows] PowerToys 설치와 사용 방법 (1) | 2021.08.18 |
---|---|
[Base64] OS에 따라 Base64 인코딩, 디코딩하는 방법 (0) | 2021.07.09 |
[intellij] 인텔리제이에서 git에 의한 파일 색상 구분 방법 (0) | 2021.05.17 |
[intellij] 인텔리제이에서 .gitignore 템플릿 사용 (0) | 2021.05.10 |
[intellij] 인텔리제이 .http로 postman 대체하는 방법 (0) | 2021.05.09 |