이 영역을 누르면 첫 페이지로 이동
Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

페이지 맨 위로 올라가기

Git/GitHub Commit 수정하기 :: Author / Contributor 수정하기

Coding Groot

Git/GitHub Commit 수정하기 :: Author / Contributor 수정하기

  • 2019.10.14 10:40
  • Git/Git Note
글 작성자: Coding Groot

잘못된 commit 메시지나 다른 사람 이름으로 올라간 commit 수정하기

공용 컴퓨터에서 작업을 하면 다른 사람의 이름으로 commit 되는 경우가 자주 발생합니다.
그럴 때는 git commit --amend라는 명령어를 사용하시면 쉽게 되돌릴 수 있습니다.
위의 명령어를 어떻게 사용하는지 이번 포스트에서 설명하겠습니다.


방금 한 commit의 메시지를 수정하고 싶은 경우

git commit --amend

아래의 상황에서 commit a786dd의 메시지를 한번 수정해 봅시다.

가장 최근에 커밋한 것을 수정해보자

1. git commit --amend 명령어를 칩니다. 그러면 수정할 텍스트가 열립니다. (저는 EDITOR 환경 변수가 vim이라서 vim으로 열립니다. - 참고)

ammend 옵션으로 가장 최근의 커밋 수정창 진입

2. 원했던 commit 메시지로 메시지를 수정합니다. 가장 최근의 commit 메시지를 "third commit"으로 바꿔보겠습니다.

성공적으로 명령이 먹힌 경우 뜨는 창

3. 성공적으로 변경됐는지 확인합니다.

성공적으로 커밋 메시지가 변경됐네요

방금 한 commit의 Author(Contributor)를 수정하고 싶은 경우

위 상황에서 IamGrooooooot <dury.ko@gmail.com>을 IamGroot <groot@gmail.com>으로 바꾸고 싶다면 어떻게 할까요? (참고로, 사용자명 <이메일> 형식입니다)

git commit --amend --author="새로운-사용자명 <새로운-이메일-주소>"

위의 명령어처럼 사용하시면 됩니다.

사용자명을 IamGroot 이메일 주소를 groot@gmail.com으로 바꾸고 싶으면

git commit --amend --author="IamGroot <groot@gmail.com>"

이렇게 치시면 됩니다. 이렇게 치시면 vim창이 다시 열리는데요 commit 메시지를 그대로 두고 싶다면 바로 quit 하시면(:q) 됩니다.

사용자명이 잘 변경됐는지 확인해 봅시다.

제일 위의 커밋을 IamGroot, groot@gmail.com로 수정하였다!

예전에 한 commit의 메시지를 수정하고 싶은 경우

범위 수정용으로 rebase를 사용하면 편합니다.

가장 최근에 commit한 게 아니라 만약에 여러 개의 commit이나 예전의 commit을 수정하고 싶은 경우 HEAD(가장 최근에 한 commit)과 제가 수정할 commit 중 가장 오래된 commit이 있을 때까지 얼마나 차이가 나는지 카운트를 합니다. 만약 13개를 카운트한 경우 아래와 같이 씁니다.

git rebase -i HEAD~13

그리고 나면 vim창에 제가 수정하고 싶은 가장 오래된 commit부터 가장 최근에 commit(HEAD)까지 나열이 됩니다. 그다음 vim창에서 제가 수정하고 싶은 commit 앞에 적혀 있는 pick을 edit으로 수정해 주고 save and quit(:wq)을 합니다.
(나머지는 그대로 나둬야 합니다!!)

pick은 그 commit을 그대로 사용하겠다는 의미이고 edit은 그 commit의 내용을 수정하겠다는 의미입니다.

이렇게 명령어를 치면 제가 edit으로 수정한 commit에 해당되는 것들을 차례로 수정하게 됩니다.

1. 그다음은 위에서 설명한 amend 옵션을 사용하여 commit을 수정한 후 (새로운 author를 설정하는 경우)
git commit --amend --author="새로운-사용자명 <새로운-이메일>
이후의 vim창에서 commit 메시지도 수정할 수 있습니다.

2. 아래의 명령어로 다음 commit으로 넘겨줍니다.
git rebase --continue

1. 과 2. 를 rebase가 끝났다고 뜰 때까지 반복해 줍니다.

rebase가 끝났다고 뜨면 모두 수정했다는 겁니다. 끝입니다!


만약에 GitHub에 push 했던 commit들을 수정하고 수정한 commit들을 push 하고 싶으면 강제로 push를 해야 됩니다. GitHub에 이미 올라간 commit과 제 로컬의 commit이 달라져서 충돌되기 때문이죠. 그래서 강제로 push 해서 덮어씌워줘야 합니다.

아래의 명령어는 로컬에 있는 Git 저장소를 강제로 GitHub에 push해서 덮어씌우는 명령어입니다. 잘못하면 파일들을 다 날릴 수도 있기 때문에 꼭 Log를 확인한 후 제대로 변경이 됐는지 확인한 후 사용하세요!!
만약 혼자 작업하는 저장소가 아니라면 강제로 push하는 것을 권하지 않습니다. 꼭 해야 한다면 내가 강제로 push하는 순간부터 다른 사람들의 저장소가 GitHub의 저장소와 충돌하기 때문에 팀원들에게 모두에게 알리고 해야 합니다.

# [사용법]
git push -f <remote명> <branch명>
# [origin이라는 원격의 master 브랜치에 강제로 푸쉬하는 예시]
git push -f orgin master
반응형

댓글

댓글을 사용할 수 없습니다.

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Git의 파일 상태 구분법

    Git의 파일 상태 구분법

    2020.04.09
  • Git Internals 정리 :: Git은 어떻게 동작할까?

    Git Internals 정리 :: Git은 어떻게 동작할까?

    2020.03.16
  • .gitignore가 동작 안할 때 상황별로 해결하기

    .gitignore가 동작 안할 때 상황별로 해결하기

    2020.02.29
  • GitHub README.md 이미지가 갱신/업데이트 안 되는 경우 해결법

    GitHub README.md 이미지가 갱신/업데이트 안 되는 경우 해결법

    2020.02.20
다른 글 더 둘러보기

정보

Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

  • Coding Groot의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 소개
  • 블로그 저작권

카테고리

  • 분류 전체보기 (182)
    • Git (23)
      • Git Tutorial (9)
      • Git Note (7)
      • Git Lecture (7)
    • Programming Language (1)
      • C (2)
      • C Sharp (5)
      • Java (4)
      • JavaScript (7)
      • Julia (5)
      • Python (4)
    • Programming (8)
      • Algorithm (2)
      • Compiler (5)
      • Data Structure (0)
      • Web (12)
      • NestJS (2)
    • DevOps, Infra (36)
      • Apple (6)
      • Cloud (15)
      • Database (1)
      • Network (4)
      • Linux (8)
    • Game Programming (11)
      • Unity Tutorial (5)
      • Unity Note (6)
    • Hardware Design (1)
      • Digital Circuit (1)
    • Note (49)
      • Coffee (2)
      • Retrospect (15)
      • Reading List (14)
    • Mathematics (1)

인기 글

공지사항

태그

  • 한빛미디어
  • 회고
  • aws
  • git
  • Github
  • tutorial
  • javascript
  • 서평
  • 전체 보기…

정보

Coding Groot의 Coding Groot

Coding Groot

Coding Groot

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • GitHub
  • SlideShare
  • 유니티 2020 수업
  • TIL Blog
  • 모도코

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. Copyright © Coding Groot.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.