commit / merge / branch / fetch
stash / push / PR(pull-request)
전 게시물에서 프로젝트를 clone 하는 과정 까지 다루었다.
clone한 프로젝트에서 각자 나름의 작업과정을 거치면, 소스파일이 변경 될 것이다.
이 변경된 소스파일의 내용을 명시하는 것이 바로 commit 이다.
fork 하는 이유 = 소스 다운받기
clone 하는 이유 = fork 하는 이유(소스 다운) + 이력도 같이 받기
우선 commit을 하는 방법을 알아 보기 전,
이 프로젝트가 어떻게 진행되는지 명령어를 통해 알아보는 방법을 소개하겠다
$ git shortlog -sn | nl 을 시행하면 다음과 같이 순위와 commit 개수 , commit 한 사람이 출력된다.
실행시, 전체 commit의 개수만 출력된다 ex) 307
좌측의 7자리 숫자와 영문자가 commit id이고 고유한 값을 가지고 있다!
그리고 ID 우측에 적힌 내용은 소스 수정의 이유를 개발자가 간략히 적은 것이다.
★★★Commit Message 작성요령★★★
fix => 잘못된 것을 고친것
└ ex) 오탈자 수정 / 잘못된 소스 수정
improve => 원래는 잘되던건데 개선한것
└ ex) 특정 기능 수행시간 10초 -> 5초
add => 없는 기능 옵션 추가할때
└ 단순한 함수/클래스 추가의 경우 해당 X!
implement => add 랑 비슷한 의미
└ 구현
support => 지원기기 / os 확대
└ 윈도우 -> 리눅스에서도 가능하게
작성 예시 = fix warnings and failures
기존 코드는 빨간색
변경된 코드는 녹색 으로 출력 된다
merge commit의 내용은 존재하지 않는다
수정사항이 없으므로 commit의 개수를 셀 때 빼고 세는 경우도 있다
선택한 폴더를 기준으로 commit list가 출력된다
첫 commit이 무엇인지 살펴볼때 사용하면 유용하다
(1) 수정내역(commit)만들기 전 준비(add)
(2) 수정내역(commit) 생성
(3) 현재 소스파일 상태(status) 확인
branch = 독립적인 작업 공간을 생성 (같은 파일 다른 세상)
push = 나의 프로젝트에 commit 업로드
PR = 팀프로젝트에 내가 만든 commit 제출
체크아웃(checkout)이란, 내가 사용할 브랜치를 지정(생성/전환)하는 것
checkout 명령에 -b 옵션을 넣으면
브랜치 작성과 체크아웃을 한꺼번에 실행가능
master branch에는 hi.txt파일이 없지만, fix-mnist branch에는 hi.txt가 존재한다!
checkout vs stash
파일 복구하기(checkout) vs 수정내용 저장(stash)
○유용한 명령어
$ git checkout -- mnist/main.py main.py 되돌리기
$ git checkout -- ./ 이것저것 건드린거 전부 되돌리기
commit을 추가할 때 쓸모 없는 거 추가하면 별로 좋지 않음
만약 commit이 수정사항이 생겼을때 기존의 commit을 수정하는 방법 > --amend
ㄴ 단 , 최신 commit을 수정함 (예전 commit 수정하려면 명령어 추가 필요)