<Git> 2. Git GitHub 입문 - part3
by BFine반응형
Git Github 입문
Chapter 10 - Git 고급
10.0 Git 고급명령어
명령어 | 기능 |
---|---|
git tag | commit을 참조하기 쉽게 이름을 붙인다 |
git commit -amend | 최종 commit을 취소하고 새로운 내용을 덮어 쓸 수 있다. |
git revert | 이전 작성 commit을 삭제하면서 이에 대한 commit이 만들어진다. |
git reset | 이전 버전으로 되돌릴때 사용한다 commit은 만들어지지 않는다. |
git checkout HEAD – 파일 | commit하지 않은 변경 내역을 취소한다. |
git rebase / -i | 병합할때 사용하며 branch가 많을경우 이력확인하면서 병합/ 다른 두개의 커밋내역을 합친다. |
10.1 Git tag : 특정 commit을 참조하는 이름 붙이기
- git에서 HEAD 는 현재 작업하는 branch를 가르키는 포인터이다.
git log -숫자
는 최신commit부터 숫자만큼 불러온다.- tag는
git tag 태그이름
으로 붙일 수 있다.git log
로 확인할 수 있다. - 특정 commit에 붙이려면 commit 체크섬값 앞 4자리를 뒤에 붙이면 된다.
- annotated tag(-a 옵션)는 누가 언제 왜(+ 메세지) 이 tag를 붙였는지 알 수 있다.(
git show tag명
으로 볼 수 있다.)
10.2 Git commit --amend : 마지막 commit 수정하기
git commit --amend
로 마지막 commit과 현재 commit이 합쳐진 새로운 commit을 만들 수 있다.- 변경내역이 없을경우 commit 메세지만 변경한다.
- SHA-1 체크섬 값이 변화하는데 이는 수정이 아닌 commit을 새롭게 만든다 는 의미로 볼 수 있다.
10.3 Git revert : 공개된 commit의 변경 내역 되돌리기
- commit 내역을 수정하는 것은 좋은 방법이 아니다.
- 수정하지 않고 이전이 commit으로 되돌리는 것이
git revert
이다. (revert 한 것은 commit으로 남는다) - 해당 지점의 commit 내용을 없던일로 처리 하는 것이라 볼 수 있다.(이전 commit 기록은 남겨둔다)
- 즉 revert를 실행한 시점부터 현재 commit 까지 변경내역을 거꾸로 적용 하는 commit을 만드는 것이다.
- ex) 1 2 3 4 commit 있을때 2번내역을 지우고 싶은 경우 revert 2번 체크섬값을 하면 새로운 commit 생긴다.
- 그리고 ls 해보면 2번 파일은 사라지고 1 3 4 파일만 남은 것을 확인 할 수 있다.
10.4 Git revert : 이전 작업 결과를 저장한 상태로 되돌리기
- git reset은 이전 commit을 남기지 않고 새로운 commit을 남긴다 는 차이가 있다.
- 그리고 3가지 모드가 존재한다. (인덱스는 commit전에 변경 내역을 담는 준비영역,디렉터리는 실제저장소)
- hard -> HEAD 변경, 인덱스 변경, 디렉터리 변경
- mixed -> HEAD 변경, 인덱스 변경, 디렉터리 변경안함 (기본값)
- soft -> HEAD 변경, 인덱스 변경안함, 디렉터리 변경안함
- ex) 1 2 3 있을때 hard는 파일도 삭제, soft는 파일 보존, git add 상태가 된다.
- 명령옵션은 branch명 or HEAD^,~ 이뜻은 개수만큼 커밋을 되돌린다 (~하나면 바로 이전 commit)
- ORIG_HEAD 지운 커밋 내역을 보관하고 이를 통해 되돌릴 수 있다.
10.5 Git checkout HEAD --filename : 특정파일을 최종 커밋 시점으로 되돌리기
git checkout HEAD -- filename
은 파일 하나의 변경내역을 원래대로(이전commit) 되돌릴때 사용한다.- 바로 전 commit 상태로 돌아가는 것이므로 현재 수정한 내역들이 돌아간다.
- 특정 commit 시점으로 바꿀때는 HEAD를 체크섬값으로 바꿔서 명령을 실행하면 된다.
- reset(hard 제외)는 commit만 되돌린다면 이것은 내용을 완전히 바꾼다.
10.6 Git rebase : 브랜치 이력을 확인하면서 병합하기
- merge시 충돌이 발생할 경우 처리하고 해결한 commit을 남기는데 여러번 발생 할 경우 계속해야한다.
- git rebase는 commit 내역을 깔끔하게 정리 해서 merge 할 수 있다는 장점이 있다.
- base를 다시 정하는 것 과 같고 merge할 branch 앞으로 commit 내역을 옮기는 것 이라 볼 수 있다.
- merge 할때
--no-ff
를 사용하면 일렬로 merge 되지않고 branch 그래프가 보여진다. - rebase 옵션은 3가지가 있다.
--continue
는 충돌상태를 해결하고 작업을 진행한다.--skip
은 병합 대상의 branch 내용으로 강제병합한다.--abort
는 rebase 명령을 취소한다.
10.6 Git rebase -i : 커밋 내역 합하기
- i는 interativce의 약자로 상호작용하면서 rebase할 commit을 고르는 것이다.
- commit 내역과 작업 내역을 모두 합해서 깔끔한 정리가 가능하다.
git rebase -i HEAD~~
하면 최근 commit 2개가 합쳐진다.- 남기는 메세지 앞에는 pick을 붙인다.
- 없애는 메세지 앞에는 fixup을 붙인다.
출처
반응형
'공부(2018~2019) - 스킨변경전 > Git' 카테고리의 다른 글
<Git> 1. Git GitHub 입문 - part1 (0) | 2019.05.02 |
---|
블로그의 정보
57개월 BackEnd
BFine