commit

yeji kang·2020년 7월 10일
0

git,github

목록 보기
4/5

커밋 히스토리 git show git log

커밋히스토리 : 이때까지 한 커밋들

git log : 커밋 히스토리를 출력

  • log : 기록, 일지

  • 위로 올라갈수록 최근 commit 아래 :old

  • commit 뒤에 문자열의 의미 : 커밋아이디(각각의 커밋을 구별하기 위해 아이디로 관리) = 또는 커밋해시라고 표현합니다.

    Author : 작성한 사람
    Date : 날짜
    커밋메시지

옵션 --pretty = oneline

git log --pretty=oneline : 커밋히스토리 깔끔하게 보기
=oneline : 커밋당 한 줄씩

git show

git show 커밋아이디 : 특정 커밋에서 어떤 변경사항이 있었는지 확인
(tip! : 커밋아이디 앞에 4자리정도만 써도 ok)

--- 해당커밋 이전의 모습
+++ 해당 커밋의 모습

m 옵션 없이도 커밋메시지 남기는 방법

  1. 코드 수정

  2. git add .

  3. git commit 해보기

    새로운 창이 떴습니다.

Please enter .... 안내 문구 #으로 시작하는 커밋메시지에는 표시되지 않는다.
vim이라는 편집 에디터가 뜹니다.
4. i 부르기 -> 편집모드
5. 커밋 메시지 작성
6. esc + :wq
7. git log 확인해보기
8. 커밋메시지 확인

-m 옵션 없이 git commit만으로 텍스트 에디터에 커밋 메시지 남기기

장점 : 복잡하고 긴 커밋 메시지를 쉽게 남길 수 있다!

최신 커밋 수정하기

" 코드를 수정하고 올릴걸,," or "커밋 메시지를 좀 더 자세하게 쓸걸"
이럴 때 최신 커밋을 수정해봅시다. 여기서 포인트는 새로운 커밋을 하려고하는게 아니라는점!

  • amend : 수정하다,고치다

git commit --amend : 최신 커밋 수정해서 다시 새로운 커밋으로 만들기

  1. 코드 수정 및 저장
  2. git add .
  3. git commit --amend 작성
  4. 커밋메시지를 수정하거나 그냥 넘어가도 된다.
  • 수정한다면 i 누르고 수정 후 esc 누른 후 :wq
  1. git log --pretty=oneline 으로 확인해보기
  2. git push 하기

커밋 메시지 작성 가이드라인

커밋 메시지 : 1.커밋을 한 사용자 아이디 2. 커밋한 날짜,시간 3. 커밋 메시지

1) 커밋 메시지의 제목(title)과 상세 설명(body) 사이에는 한 줄을 비우기.
2) 커밋 메시지의 제목 뒤에 온점(.)을 붙이지 말기.
3) 제목의 첫 번째 알파벳은 대문자로 작성하기.
4) 커밋 메시지의 제목은 명령조로 작성하기( ex) Fix it / Fixed it/ Fixes it)
5) 커밋의 상세 내용에는 이런 걸 적기.
- 왜 커밋 했는지
- 어떤 문제가 있었는지
- 적용한 해결책이 어떤 효과를 가지는지
6) 다른 사람들이 자신의 코드를 바로 이해할 수 있다고 가정하지 말고 최대한 친절하게 작성.

커밋할 때 알아야할 가이드라인

1) 하나의 커밋에는 하나의 수정사항, 하나의 이슈(issue)를 해결한 내용만 남기도록하세요.
다양하게 수정하고나서 하나의 커밋으로 남기는 것은 좋지 않습니다.
-커밋 간의 독립성이 사라지지 않게 너무 많은 작업의 결과를 하나의 커밋으로 담지 말기!

2) 현재 프로젝트 디렉토리 상태가 그 내부의 전체 코드를 실행했을 때 에러가 발생하지 않는 상태인 경우에만 커밋을 하도록하세요.

  • 항상 정상 실행되는 상태의 코드여야합니다!
  • 과거의 커밋이라도
    • 과거 버전의 프로그램을 사용해야하거나
    • 아예 그 커밋으로 현재 프로젝트를 리셋할 수 있습니다.
    • 과거 커밋을 시작점으로 한 다른 방향의 별도 프로젝트를 시작하거나

나중에 다시 봤을 때 이해하는데 어려움이 없도록, 다른 동료 개발자와 협업하는 데 방해가 되지 않도록

alias 설정

aliasing : 커맨드 전체에 별명을 붙여서 그 별명(alias)을 사용할 수 있도록 해주는 기능

git config alias.별명 커맨드 : 길이가 긴 커맨드에 별명으로 해당 커맨드를 실행할 수 있도록 설정

예제

 - git log --pretty=oneline을 git history라는 별명으로 설정하기


 -> git congfig alias.history 'log --pretty=oneline'

참고하기 : https://johngrib.github.io/wiki/git-alias/

두 커밋 간의 차이 보기

git diff [이전의 커밋 아이디] [그이후의 커밋아이디] : 두 커밋 간의 차이 비교

  • diff : difference의 줄임말

git show랑 비슷합니다.

HEAD의 의미

HEAD : 어떤 커밋을 가리킴. 보통 가장 최근에 한 커밋을 가리킴.매번 더 새로운 커밋을 가리킴

working directory/ working tree -> HEAD가 가리키는 커밋에 따라 구성됩니다.

cat으로 확인해보기 (최신 모습이죠!)

reset

git reset [옵션] [커밋아이디] : 옵션에 따라 하는 작업이 달라짐(옵션 생략하면 --mixed 옵션 적용됨)

최신 커밋을 가리키는 거에서 이전 커밋을 가리키게 설정하기

git reset --hard [가고싶은 커밋아이디]

  1. cat (파일) 그 커밋상태로 갔는지 확인하기

git reset: HEAD가 과거의 커밋을 가리키게 할 수 있다. working directory의 내용도 과거의 커밋의 모습으로 돌아가게 한다.

과거 커밋으로 아예 돌아가고 싶을 때

reset을 들어가기전..

staging area에 있던 것들은 커밋을 하더라도 그것과 상관없이 계속 남아있습니다.
계속 git add할 때마다 staging area에서는 새로운 파일이 추가되거나 원래 있던 파일이 더 새로운 버전의 것으로 교체되거나 할 뿐입니다.

git reset 옵션

--soft --mixed --hard

  1. HEAD가 과거의 특정 커밋을 가리키도록한다.--soft는 여기까지
  2. staging area를 과거의 특정 커밋의 내용과 똑같게 만든다.--mixed 는 여기까지
  3. working directory를 과거의 특정 커밋의 내용과 똑같게 만든다.--hard는 여기까지

HEAD 기준으로 git reset하기

git reset --hard HEAD^

HEAD^ : 현재 HEAD가 가리키고 있는 커밋의 바로 이전 커밋을 나타냅니다.

git reset --hard HEAD~2

HEAD~2 : 현재 HEAD가 가리키는 커밋보다 2단계 전에 있는 커밋을 나타냅니다.

커밋에 tag 달기

tag : 보통 프로젝트에서 주요 버전의 시작점이 되는 커밋에 태그를 답니다. ex) Version2 Version1

git tag [태그이름] [커밋아이디] : 특정 커밋에 태그를 붙임 ex)git tag Version_1 84ab

git tag : 모든 태그 조회하기.

git show [태그이름] : 태그와 연결된 커밋 보기 ex)git show Version_1

0개의 댓글