예전에 커밋한 메시지를 수정하는 방법을 알아보자

 

 

1. 수정을 원하는 커밋이 존재하는 곳까지 HEAD로 부터 지정

git rebase -i HEAD~5

 

그러면 아래와 같이 편집을 할 수 있는데, 수정을 원하는 커밋에 pick 대신 edit(또는 e)를 써준다!
(커밋 메시지 수정 외의 다른 기능도 있음 - 아래 명령어 참조)

pick cc5605d test1
e 487bd6b test2
e 73bda22 test3
pick 0ce101f test4
pick a2198fc test5

# Rebase bb0d4f2..a2198fc onto bb0d4f2 (5 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

 

2. 위 vi를 수정하고 저장하면 edit(또는 e)로 지정한 커밋 메시지로 차례차례 옮겨진다.

아래 명령어를 입력하여 현재 위치에 있는 메시지 수정

git commit -amend

 

수정이 완료가 되었으면 아래 명령어 입력. 아래 명령어를 입력하면 다음 수정하는 커밋으로 HEAD가 이동된다.

git rebase --continue

 

수정을 원하는 커밋이 모두 수정 완료되면

Successfully rebased and updated refs/heads/branch_name.

 

이렇게 나오면 정상적으로 수정 끝!

 

 

'Git' 카테고리의 다른 글

[Git] 정의 및 사용방법  (0) 2018.05.29
[Git] Remote branch 이름 변경하기  (1) 2016.04.06
[Git] .gitignore 적용 안될 경우 해결방법  (0) 2015.03.31
목차
1. 버전관리란?
2. Git의 목표
3. Git의 기초
4. CLI
5. 명령어

 

1. 버전관리란?

버전 관리 시스템(Version Control System) :  파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템

  • 로컬 버전 관리 시스템
  • 중앙집중식 버전 관리 시스템(CVCS)
    - CVS, Subversion, Perforce 같은 시스템은 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout).
  • 분산 버전 관리 시스템(DVCS)
    - Git, Mecurial, Bazaar, Darcs 같은 DVCS에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 Checkout 하지 않음. 저장소를 전부 복제
    - 리모트 저장소가 존재

 

 

2. Git의 목표

  • 빠른 속도
  • 단순한 구조
  • 비선형적인 개발(수천 개의 동시 다발적인 브랜치)
  • 완벽한 분산
  • Linux 커널 같은 대형 프로젝트에도 유용할 것(속도나 데이터 크기 면에서)
 

3. Git 기초

  • 차이가 아니라 스냅샷
    Subversion과 가장 큰 차이점은 데이터를 다루는 방법
    - Subversion: 각 파일의 변화를 시간순으로 관리하면서 파일들의 집합을 관리
    - Git: 데이터를 파일 시스템 스냅샷으로 취급하고 크기가 아주 작음. 데이터를 스냅샷의 스트림처럼 취급
  • 거의 모든 명령을 로컬에서 실행
  • Git의 무결성: 체크섬

- 데이터를 저장하기 전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리
- Git에서 사용하는 가장 기본적인(Atomic) 데이터 단위이자 Git의 기본 철학
- SHA-1 해시를 사용하여 만듦
- 40자 길이의 16진수 문자열
- ex) 24b9da6552252987aa493b52f8696cd6d3b00373

  • Git은 데이터를 추가할 뿐
  • 세가지 상태
    Git은 파일을 Committed, Modified, Staged 이렇게 세 가지 상태로 관리
    - Committed : 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미
    - Modifed : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말함
    - Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미

 

 

4. CLI

Git을 사용하는 방법은 많지만 Git의 모든 기능을 지원하는 것은 CLI
GUI를 사용하려면 SourceTree 추천

 

 

5. 명령어

첨부파일에 있는 cheat sheet 을 보면 한눈에 명령어를 볼 수있다.

git-cheat-sheet-education.pdf
다운로드

 

 

 

Ref.
https://git-scm.com/book/ko/v2
GitHub Education

Remote branch의 이름은 직접적으로 변경할 수는 없으므로, 아래와 같은 방법을 사용한다.

 

1. Local에 있는 branch 이름 변경하기

git branch -m oldbranch newbranch

2. Remote에 존재하는 oldbranch 삭제하기

git push origin :oldbranch

3. newbranch push 하기

git push origin newbranch

 

 끝!

 

 

'Git' 카테고리의 다른 글

[Git] 커밋 메시지 수정하기 - git rebase  (0) 2020.03.06
[Git] 정의 및 사용방법  (0) 2018.05.29
[Git] .gitignore 적용 안될 경우 해결방법  (0) 2015.03.31

최초에 gitignore을 적용하고 나중에 ignore하고 싶은 파일이 생겨서 .gitignore에 추가를 하였지만, 
'Unstaged files'로 표시되고 적용안될 경우 해결 방법 입니다.

git rm -r --cached .
git add .
git commit -m "Fixed .gitignore" 

 

출처

'Git' 카테고리의 다른 글

[Git] 커밋 메시지 수정하기 - git rebase  (0) 2020.03.06
[Git] 정의 및 사용방법  (0) 2018.05.29
[Git] Remote branch 이름 변경하기  (1) 2016.04.06

+ Recent posts