Git 커밋 다루기
커밋 히스토리 확인하기
git log
git log --pretty=oneline
-> 커밋 아이디(해시), 작성자, 작성일, 커밋 메시지 조회
git 띄고 log 띄고 --pretty=oneline (붙여서!)
git show 커밋해시 (중복없을 시 앞 4자리만 입력해도됨)
-> 변경사항을 보여줌
git commit 만 치면 vim이 실행되고 커밋메시지를 제목 +(한줄띄고) 세부내용 으로 길게 쓸 수 있다
git commit --amend
-> 최신 커밋을 수정할 수 있다
:파일을 수정, 저장하고 커맨드 입력하면 해당 커밋 메시지가 뜸(vim)
커밋후에는 푸시 해주기(로컬->리모트 레포지토리)
커밋 가이드라인
1. 커밋 메시지 작성 가이드라인
(1) 커밋 제목과 상세 설명 사이에 한 줄 비워두기
(2) 커밋 메시지의 제목 뒤에 온점(.)을 붙이지 마세요.
(3) 커밋 메시지의 제목의 첫 번째 알파벳은 대문자로 작성하세요.
(4) 커밋 메시지의 제목은 명령조로 작성하세요.(Fix it / Fixed it / Fixes it)
(5) 커밋의 상세 내용에는 이런 걸 적으면 좋습니다.
- 왜 커밋을 했는지
- 어떤 문제가 있었고
- 적용한 해결책이 어떤 효과를 가지는지
(6) 다른 사람들이 자신의 코드를 바로 이해할 수 있다고 가정하지 말고 최대한 친절하게 작성하세요.
2. 커밋할 때 알아야할 가이드라인
(1) 하나의 커밋에는 하나의 수정사항, 하나의 이슈(issue)를 해결한 내용만 남기도록 하세요. 다양하게 수정을 하고나서 하나의 커밋으로 남기는 것은 좋지 않습니다. 하나의 커밋이 하나의 사실만을 갖고 있어야 나중에 이해하기 쉽습니다.
(2) 현재 프로젝트 디렉토리의 상태가 그 내부의 전체 코드를 실행했을 때 에러가 발생하지 않는 상태인 경우에만 커밋을 하도록 하세요. 나중에 동료 개발자가 특정 커밋의 코드로 실행했을 때 에러가 발생한다면 혼란을 줄 수 있습니다.
과거의 커밋이라도
- 과거 버전의 프로그램을 사용해야하거나
- 과거 커밋을 시작점으로 한 다른 방향의 별도 프로젝트를 시작하거나
- 아예 그 커밋으로 현재 프로젝트를 리셋할 수도 있습니다.
따라서 매 커밋의 코드들은 항상 정상 실행되는 상태의 코드여야 합니다.
긴 커맨드에 별면(alias) 붙이기 = aliasing
git config alias.별명 '커맨드'
ex. git config alias.history 'log --pretty=oneline' => git history 로 불러올 수 있다
: 현재 디렉토리에서만 사용 가능
--global 옵션을 사용하면 현재 사용자에게 적용. 즉 여러 폴더에서 사용가능
=> 이 경우 .gitconfig 폴더에 저장되므로 cat~/.gitconfig 로 확인할 수 있다
--system 옵션을 주면 현재 사용자뿐 아니라 모든 사용자의 모든 git 파일에 적용?!
https://www.codeit.kr/community/questions/UXVlc3Rpb246NWVhYWY1YTVmYWY4MGI2ZDdmZTNmMDRi
제가 쓰는 git log alias 를 공유해봅니다.
설정하면 이미지 처럼 보여지게 됩니다.특징은 체크섬(48cb60d)을 줄여서 보여주고, 언제 commit 을 했는지, 그리고 commit 한 user 를 보여주게 됩니다. 알록달록 하기도 하구요^^설정하는 건 기계인간
www.codeit.kr
git diff 이전커밋 이후커밋아이디 -> 두 커밋간의 차이를 보여줌
HEAD : 보통 가장 최근의 커밋을 가르킨다
헤드가 가르키는 커밋에 따라 워킹 디렉토리 내부 & staging area의 내용이 달라진다.
git reset --hard 커밋해시 => 커밋해시가 가르키는 커밋으로 돌아감
git reset --hard HEAD^ => 바로 이전 커밋
git reset --hard HEAD~x => x단계 이전의 커밋
git reset --staged 파일명 => 특정 파일만 add 취소
옵션 | working directory | staging area | repository |
-- soft | 안바뀜 | 안바뀜 | HEAD 옮겨감 |
--mixed | 안바뀜 | 이전 커밋으로 바뀜 | HEAD 옮겨감 |
--hard | 이전 커밋으로 바뀜 | 이전 커밋으로 바뀜 | HEAD 옮겨감 |
https://www.codeit.kr/community/questions/UXVlc3Rpb246NjEwNTQyMTY1M2JjZGYwNzhiMzJiOGEy
git 명령어 옵션 dash 개수 질문드립니다.
cli 에서 명령어 옵션은 dash (-) 하나 라고 배웠는데요git 에서 사용하는 옵션들은 dash 두개(--)로 설정해주고 있는것 같은데- 와 --의 차이가 있는건가요?
www.codeit.kr
reset 이전의 다시 마지막 작업물은? push 해두었다면 리모트 레포지토리에서 다시 가지고올 수 있다
git pull
git tag 태그이름 커밋아이디 => 특정 커밋에 태그를 달 수 있다 (Ver_1 등등..)
git tag => 태크 리스트를 볼 수 있다
git show 태그이름 => 각 태그에 연결된 커밋을 볼 수있다
=> 프로젝트 이력을 파악하기 쉬움
git tag -d 지울태그이름 => 태그 지우기