일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 다른컴퓨터에서 git사용
- 고양이 사진 검색기
- vue 지역 컴포넌트
- vue mixin
- vuex map
- KDT 프로그래머스
- react next
- 프로그래머스 데브코스
- 프로그래머스 데브코스 프론트엔드
- 프로그래머스 프론트엔드 데브코스
- 이벤트 수식어
- 리액트
- vue 이벤트 수신
- SCSS forward
- Vue
- 폼 입력 바인딩
- postcss
- git 같은계정 다른 컴퓨터
- 프로그래머스 K_Digital Training
- SCSS use
- Spacer
- 쌓임맥락
- intersection opserver
- nextjs사용법
- SCSS import
- 리스트 렌더링
- SCSS extend
- netlify redirect
- KDT 프로그래머스 데브코스 프론트엔드
- flex
- Today
- Total
혼자 적어보는 노트
[Git] rebase -i를 이용한 커밋(commit) 삭제/수정/병합/분할 본문
프로젝트를 작업하다 보면 과거의 커밋들을 수정해야 할 때가 있다.
rebase -i를 통한 과거의 commit 삭제/수정/병합/분할 하는 방법에 대해 알아보자.
아래에 예제를 위한 테스트 commit을 만들어 보았다.
λ git log --oneline
672b32f (HEAD -> main) 로그인 에러 수정, 회원가입 기능 추가
2670e3a 로그인 기능 추가 완료
362e466 로그인 기능 작업 진행
b2155d3 메인 슬라이드 추가ㅏ
6080ad8 지워도 되는 커밋
9fa6e95 메인메뉴 추가
해야할 작업은 아래와 같다.
6080ad8 지워도 되는 커밋 ────────── 삭제
b2155d3 메인 슬라이드 추가ㅏ ──────── 오타 수정(커밋 메세지 수정)
2670e3a 로그인 기능 추가 완료 ─┬───── 두 커밋 병합
362e466 로그인 기능 작업 진행 ─┘
672b32f 로그인 에러 수정, 회원가입 기능 추가 ─ 두 개의 커밋으로 분할
reabse -i
여러 커밋을 수정하기 위해 현재 커밋에서 부터 어떤 커밋까지 rebase할 지 정해주어야 하는데
기준이 되는 커밋의 이전 커밋의 해시를 적어주어야 한다,
git rebase -i [커밋 해시]
//예시
get rebase -i 9fa6e95
명령어를 입력하면 위와 같은 에디터 창이 열리는데
커밋해시 앞의 키워드를 수정함으로써 커밋들을 수정할 수 있다.
p, pick : 그대로 둘 커밋
r, reword : 커밋 메세지 변경
e, edit : 커밋 수정
d, drop : 커밋 삭제
s, squash : 이전 커밋과 병합
해당 키워드에 맞게 커밋 해시 앞의 키워드를 수정해 준 후 저장 후 닫으면
차례대로 에디터창이 나타난다.
1. 삭제
삭제의 경우 에디터 편집 이동 없이 바로 진행된다.
2. 커밋 메세지 수정
위의 커밋 메세지를 수정하고 저장 후 닫으면
바로 다음 수정할 에디터가 나타난다.
3. 이전 커밋과 병합 + 커밋 메세지 수정
위의 커밋 메세지 중 하나를 지우고
아래와 같이 수정할 메세지를 적어준다
4. 두 개의 커밋으로 분할
키워드 e로 저장 후 닫으면 에디터 편집 창 없이 해당 커밋의 위치로 이동이 된다.
λ git log
commit edb8915c28e76ad30d127d90ac37cbba705b4bd1 (HEAD, main)
Author: jinist94 <325days@naver.com>
Date: Mon Feb 7 01:47:53 2022 +0900
로그인 에러 수정, 회원가입 기능 추가
git log를 이용해 현재 위치를 확인해보면
현재 커밋은 최상단의 커밋이기 때문에 원래의 HEAD의 위치와 같지만
중간에 위치한 커밋일 경우 해당 위치로 이동된다.
git reset HEAD~
default값인 mixed를 이용하여 작업내용들을 working directory로 되돌려 주면서
현재위치의 커밋을 지워준다.
git status를 입력하여 상태를 확인하면서
각각의 파일을 add해주면서 따로 커밋을 해주면 된다.
로그인 에러 수정에는 login.txt파일을 add, commit,
회원가입 기능 추가에는 join.txt파일을 add, commit 해 준다.
git add login.txt
git commit -m "로그인 에러 수정"
git add join.txt
git commit -m "회원가입 기능 추가"
커밋을 나누어서 추가하였어도 아직 rebase상태이기 때문에
아래의 명령어로 rebase를 종료해준다.
git rebase --continue
이제 log를 확인해보면 원하던대로 커밋이 정리가 된 것을 확인할 수 있다.
λ git log --oneline
2fbf95d (HEAD -> main) 회원가입 기능 추가
6fa1e39 로그인 에러 수정
d43df8f 로그인 기능 추가
6cbd417 메인 슬라이드 추가
9fa6e95 메인메뉴 추가
c32a1be FIRST COMMIT
'기타' 카테고리의 다른 글
redux를 사용한 firebase 이메일 로그인 / react-redux-firebase (0) | 2022.02.09 |
---|---|
[Git] 다른 브랜치에서 생성한 커밋 가져오기 / cherry-pick (0) | 2022.02.08 |
[Git] 브랜치 다루기 2 - HEAD (0) | 2022.02.05 |
[Git] pull / push / fetch 다루기 + 충돌 해결 (0) | 2022.02.05 |
[Git] 브랜치 다루기, 충돌 해결 / branch / merge / rebase (0) | 2022.02.04 |