4. Git 태그와 커밋 변경

gmlwlswldbs·2021년 9월 23일
0

스터디

목록 보기
4/19

1. 태그

태그 (tag) : 커밋을 참조하기 쉽도록 이름을 붙인 것

mkdir tutorial: tutorial 이라는 폴더 생성
cd tutorial : tutorial 폴더로 이동
git init : git 저장소 생성
git tag ~ 부터 : 커밋을 통해 HEAD 부터 생성해야하는데 tag 명령어를 먼저 써버림 (애초에 태그는 커밋을 참조하기 위한 것인데)

tutorial 폴더에 테스트용 텍스트 파일 생성 후 커밋을 진행하였다
git tag <"tag name"> : 태그 생성
git tag : 생성한 태그 목록 확인 -> first_tag라는 태그가 생성된 것을 확인
git log --decorate : 태그 정보가 포함된 커밋 이력 확인

git tag -a <"tag name"> : 주석이 달린 태그 추가
git tag -am "주석" <"tag name"> : 명령어 실행시 주석 담
태그 목록을 확인해보면 확인 가능

git tag -d <"tag name"> : 태그 삭제

2. 커밋 변경하기

① 이전에 작성한 커밋 수정하기

--amend 옵선 : 누락된 파일 추가 / 기존 파일 업데이트 / 이전 커밋의 설명 변경

cd tutorial1 : tutorial1 폴더로 이동
git log : 커밋 확인
편집기 열어서 sample.txt를 수정한 후 -amend 옵션을 넣어서 커밋을 수정한다.
git log : 로그를 확인해보면 수정되어 있음을 알 수 있다.

② 이전에 작성한 커밋 지우기

revert : 이미 공개된 상태인 커밋을 내용을 지우는 새로운 커밋을 만든다 b-> b'
: 이전에 작성한 커밋을 안전하게 지움

cd tutorial2 : tutorial2 폴더로 이동
커밋 로그 확인 후 편집기를 열어 내용 확인
git revert HEAD : 현재 헤드의 커밋을 취소한다
편집기 열어 다시 확인 'pull~' 이 내용이 사라진 것을 확인 / 로그 확인해보면 커밋이 지워진 것을 알 수 있음(revert 했다는 내용의 커밋)

③ 이전에 작성한 커밋 되돌리기

reset : 더이상 필요 없어진 커밋을 버리는 명령어

soft : 커밋만 되올리고 싶을 때
mixed : 변경한 인덱스의 상태를 원래대로 되돌리고 싶을 때
hard : 최근의 커밋을 완전히 버리고 이전의 상태로 되돌리고 싶을 때
디폴트는 mixed 이고 soft와 hard 는 선택으로 가능

cd tutorial3 : tutorial3 폴더로 이동
로그를 통해 커밋 확인, 편집기를 열어 내용 확인
(나머지는 오타...)

git reset --hard HEAD~~ : hard 옵션을 주어 커밋을 완전히 버림. 헤드의 이동 확인
편집기와 로그를 열어보면 내용이 사라진 것을 알 수 있다 (하드 옵션은 작업트리, 인덱스, 헤드의 위치 모두 이동시킨다.

④ 다른 브랜치로부터 특정 커밋을 가져와서 내 브랜치에 넣기

cherry-pick : 다른 브랜치에서 지정된 커밋을 복사하여 현재 브랜치로 가져옴
: 커밋을 추가할 브랜치를 잘못 선택해서 옮기려고 할 때 / 다른 브랜치 커밋 현재 브랜치에도 추가하고 싶을 때

cd tutorial4
git branch : 브랜치 확인 (issue1 브랜치의 커밋을 master로 가져올 것이다)
git checkout issue1 : 커밋의 고유번호를 알기 위해 issue1 브랜치로 이동
git checkout master : master 브랜치로 이동
git cherry-pick "옮겨올 커밋 고유번호" : 병합 중 충돌 일어남
편집기 열어 수정 후 다시 커밋하면 그 커밋을 내 브랜치에 넣을 수 있다.

⑤ 커밋 이력 편집하기

rebase : 커밋을 다시 쓰거나 다른 커밋과 바꿔 넣을 수 있다. 특정 위치의 커밋을 삭제하거나 여러 커밋을 하나로 통합 가능
: push 전 이전 커밋 내용 정리 / 커밋 통합 / 이전 커밋 시 누락된 파일을 나중에 추 가

5-1) 커밋 통합


tutorial5 폴더로 이동 후 로그에서 커밋 확인
git rebase -i HEAD~~ : 아래와 같이 편집기에서 통합할 커밋을 pick -> squash 로 변경하고 저장함
로그 확인을 통해 커밋이 통합된 것을 알 수 있다

5-2) 커밋 수정

tutorial6 폴더로 이동 후
git rebase -i HEAD~~ : 편집기 열리면 HEAD~~ 까지 있고 변경할 커밋을 pick -> edit으로변경 후 저장
편집기 열어 수정 후 커밋 변경 후 저장
git rebase --continue : rebase 실행
충돌 일어날 시 수정 후 다시 add 후 커밋
로그 확인 시 커밋이 변경된 것을 알 수 있다 ("commit~" 이 커밋을 수정해야하는데 "pull~"도 수정된 이유는 충돌 일어나서 수정할 때 "pull~" 이 커밋도 건드려버려서 그렇다..)

⑥ 브랜치 상의 커밋을 하나로 모아 병합하기

--squash : 이 옵션을 지정하면 병합시 해당 브랜치의 커밋 전체를 통합한 커밋이 추가됨
: 토픽 브랜치의 커밋을 한번에 통합 브랜치로 병합

tutorial7 으로 이동하여 master 브랜치로 이동
git merge --squash issue1 : 병합 시 --squash 옵션을 주어 issue1의 모든 커밋 내용을 master 브랜치에 하나로 통합하여 커밋됨
로그에서 확인해볼 수 있음

0개의 댓글