이제 마무리 되어 가는 git 명령어 정리 시간...
몇가지 용어만 정리하고 시작해보자!!
통합 브랜치 - 언제든지 배포할 수 있는 버전을 만들 수 있어야 하는 브랜치, 그래서 늘 안정적인 상태를 유지하는 것이 중요하다
토픽 브랜치 - 기능 추가나 버그 수정과 같은 단위 작업을 위한 브랜치, 여러 개의 작업을 동시에 수행할 때에는, 그 수만큼 토픽 브랜치를 생성할 수 있다
$ git tag // 태그 조회
$ git tag -l "v1.8.5*" // 검색 패턴을 사용하여 태그를 검색
$ git tag --list "v1.8.5*" // -l 와 동일
$ git tag v1.4-lw // v1.4-lw 태그(Lightweight 태그) 생성
$ git tag -a v1.4 -m "my version 1.4" // v1.4 태그(Annotated 태그) 생성
$ git show v1.4 // 태그 v1.4 정보 확인
git 태그에는 2가지 종류가 있다
git tag -a v1.4 -m "my version 1.4
= Annotated 태그를 만드는 방법
-m 옵션으로 태그를 저장할 때 메시지를 함께 저장할 수 있다
git show v1.4
명령으로 태그 정보와 커밋 정보를 모두 확인할 수 있다
다음은 lightweight 태그!
git tag v1.4-lw
기본적으로 파일에 커밋 체크섬을 저장하는 것뿐이다. 다른 정보는 저장하지 않는다
이렇게 tag를 생성할 경우는 git show
를 실행하면 별도의 태그 정보는 볼 수 없고, 커밋 정보만 확인 가능하다
아 물론 지금 커밋 만 태그를 만들어줄 수 있는 것은 아니다
예전 커밋에 대해서 태그하기!
git tag -a v1.3 <커밋 체크섬>
이렇게 체크섬을 통해서 이전에 커밋된 메시지에 대해서 태그를 할 수 있다
git push
명령으로는 태그 공유가 이루어지지 않는다. 하지만 마치 branch를 공유하는 것과 같은 방법으로는 할 수 있다
git push origin <태그 이름>
마지막 줄을 보면 태그가 push 되는 것을 볼 수 있다
만약에 한 번에 태그를 여러 개 Push 하고 싶으면 --tags
옵션을 추가하여 git push 명령을 실행한다
이제 이렇게 tag를 여러 가지 생성하고 Pull
을 하면 모든 태그 정보도 함께 전송된다
태그가 특정 버전을 가리키고 있고, 특정 버전의 파일을 checkout 해서 확인하고 싶다면 git checkout v1.4
명령어를 사용하면 된다
하지만, 이렇게 checkout 할 경우, "detached HEAD"(떨어져나온 HEAD) 상태가 되며 일부 Git 관련 작업이 브랜치에서 작업하는 것과 다르게 동작할 수 있다
그러니 왠만하면 새로운 브랜치를 생성해서 작업하는 것이 좋다
git checkout -b version2 v1-4
// branch version2 로 이동해서 태그 v1-4 접근
git reset
앞에서 설명한대로 Reset은 완전히 시간을 돌려버리는 것이다. 이렇게 될 경우 파일들이 해당 시점으로 전부 돌아가고, 이후 commit 메시지는 전부 사라지게 된다.
git reset --hard <돌아가고싶은 커밋>
A -> B -> C-> D 의 경우에서 B의 커밋이 a0fvf8 인 경우
git reset --hard a0fvf8
을 실행하면, C, D 로그가 완전히 사라진다
하지만
git revert
git revert 의 경우는 다르다
git revert
명령어를 통해서 돌아가게 된다면
와 같이 Revert를 한 로그가 남게 된다.
git commit --amend
위 이미지를 보면 알겠지만 --amend 옵션을 통해서 최신 commit 메시지 수정이 가능함
git diff
를 통해서 이전 커밋과 어떤 차이가 있는지를 확인할 수 있다
아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있는 명령어이다. 아직 완료하지 않은 작업들을 commit 하지 않고 나중에 꺼내와 마무리할 수 있다
여러 번 stash를 실행했을 경우 목록으로 stash를 관리할 수 있다
위의 명령어를 통해 했던 작업을 다시 가져올 수 있다