Git을 사용할때 알아두면 유용한 명령어들이 있습니다. 아래와 같이 정리하였습니다. 참고해주세요.
git tag, 커밋을 참조하기 쉽도록 알기쉬운 이름을 붙입니다.
git commit --amend 같은 브랜치 상에 있는 최종 커밋을 취소하고 새로운 내요을 추가하거나 설명을 덧붙인 커밋을 할 수 있습니다.
git revert 이전에 작성한 commit을 삭제합니다. 그런데 특정 commit의 내용을 지우는 새로운 commit을 만들어 지운내역을 모든 사람이 알 수 있게 합니다.
git reset 어떤 commit을 버리고 이전의 특정버전으로 다시 되돌릴때 사용합니다. git revert와 다른점은 지운 커밋내역을 남기지 않는다는 점입니다.
git checkout HEAD --filename 아직 commit하지 않은 변경 내역을 취소합니다.
git rebase git merge처럼 병합할때 사용합니다. 하지만 branch가 많을 경우 branch 이력을 확인하면서 병합합니다.
git rebase -i 서로다른 두 개의 commit 내역을 합칩니다.
git tag: 특정 commit을 참조하는 이름 붙이기
git tag 명령은 저장소의 commit에 tag를 붙이는 명령입니다.
가장 최근commit에 tag를 붙이고 싶다면 간단하게 다음 명령을 실행하면됩니다.
$ git tag 태그이름
저는 1.0 버전이라는 태그를 붙이겠습니다.
$ git tag 1.0
그리고 로그와 함꼐 태그를 보겠습니다.
$ git log --decorate -1
tag와 commit SHA-l 체크섬 값을 같이보려면 아래와 같이 칩니다.
$ git show-ref --tags
특정 commit에 tag 붙이는 방법.
먼저 SHA-1 체크섬값을 알아야 합니다. 여기에서는 최근 커밋 바로 애라의 커밋에 태그를 붙이겠습니다.
아래와 같이 명령어를 실행합니다.
$ git log -2
이전의 commit의 SHA값 8591 앞자리를 기억합니다.
그 이후 아래와 같이 엔터칩니다.
$ git tag 0.9 8591
그이후 또 아래와 같이 명령을 실행합니다.
$ git show-ref --tags
태그가 붙여진것을 확인하실 수 있습니다.
git tag 명령으로는 'light weight' tag만을 생성하게 됩니다. 누가, 언제 붙였는지 젼혀 알 수 없습니다.
tag 그자체에 대한 기록은 이름외에 아무것도 없는 상태입니다.
하지만 "annotated"태그는 누가 언제 태그를 붙였는지 기록하고, 추가 메세지 까지 저장합니다.
로그를 살펴보면서 태그들을 보다가 해당 태그 시점에 태그에 대한 의문이 생기면 누구에게 질문해야하는지 한번에 알수있게 됩니다.
또한, 커밋과 다른 시점에 붙은 버전 태그가 있다면, 언제 해당버전이 배포되었는지 알수있기도 합니다.
이번에는 annotated 태그를 붙여보겠습니다.
$ git log -3
3번째전거의 SHA 앞자리를 확인합니다.
그 이후 아래와 같이 명령을 치고 엔터를 칩니다.
$ git tag -a 0.8 68eb
이렇게 명령을 실행하면 vi 편집기가 싱행되는것을 확인하실 수 있습니다. 기록할 메세지를 입력하고 저장하면 tag 붙이이기가 완료되게 됩니다.
$git show 태그이름
git show 태그이름 명령을 실행해 확인하면, 아까와는 달리 누가 언제 어떤 메시지를 입력해 태그를 붙였는지 확인하실 수 있습니다.
$ git show 0.8
git commit --amend: 마지막 commit 수정하기
마지막 commit message를 수정하는 명령은 간단합니다.
$ git commit --amend
위의 명령을 실행하면 마지막 commit과 commit하지 않는 상태에 있는 변경내역이 서로 합쳐진 새커밋을 만들게 됩니다. 만약 아무런 변경내역을 만들지 않고 명령어를 실행하면 커밋 메시지만 변경하게 되는것과 같은 효과를 낼 수 있습니다.
한번 일부러 hello.py 파일을 변경해보겠습니다. (vi 편집기창을 열어서 it's git commit --amend 라고 변경사항늘 만들어 놓겠습니다.)
변경 내역을 추가하기위해서 아래와 같이 명령을 실행합니다.
$git commit --amend
다시 commit 메시지를 입력하는 편집기가 등장합니다. 변경 내역이 있었으므로, 기존 commit message였던
conflict resolved github뒤에 by jinss 라는 커밋메시지를 추가한후 저장하겠습니다.
저는 이상태에서(변경내역이 없는상태)에서 commit message만 바꿔보겠습니다.
$git commit --amend 명령을 다시 실행합니다.
그리고 뒤에 by pjh를 붙였습니다.
그리고 아래와 같이 명령을 실행해봅니다.
$git log -1
좀더 설명드리자면, git commit --amend는 최종 commit을 수정하는 것이 아니라, 최종 commit을 대체하는 새로운 commit 을 만드는 것입니다.
명려을 실행하기전과 후의 commit의 sha값을 비교해보면 바껴있는것을 확인하실 수 있습니다. 또한 최종commit에서 추가되어 새로운 commit이 나오는게 아니라 마지막 commit에서 메세지값이 바껴진 새로운 commit이 대체되는것을 확인하실 수 있습니다. 물론 파일에서 변경사항이 있었다면, 그변경사항(파일)과 메세지까지 바뀐게 commit에 반영되어 SHA값이 새로 commit 되는거죠.
git log -5를 해봐도 마지막 commit을 계속 덧붙혀으나 위에는 최종 commit에서 덧붙혀진게 하나만 나오고 또한, 그전 마지막에있었던 commit의 SHA값이 달라짐을 확인하실 수 있습니다.
$ git log -5
여기서 git commit --amend를 쳐서 저장하고 다시 git log -5 를 쳐면 맨마지막 commit의 sha값이 변경됨을 확인하실 수 있습니다.
$ git commit --amend
$ git log -3
'개발 Support > GIT' 카테고리의 다른 글
git rebase, git rebase -i (0) | 2017.07.16 |
---|---|
git revert, reset, checkout head -- filename (0) | 2017.07.15 |
원격저장소와 GIT (0) | 2017.07.15 |
원격저장소와 GitHub (0) | 2017.07.09 |
로컬 저장소 git 기본 및 실습 (1) | 2017.07.09 |