제대로 파는 Git & GitHub - by 얄코 - 인프런 | 강의
코알못도 따라올 수 있는 친절하고 쉬운 강좌! 현업 개발자는 Git 박사로 들어주는 끝판왕 강좌!, - 강의 소개 | 인프런...
www.inflearn.com
[문과 코린이의 IT 기록장] Git 심화 - 취소 및 되돌리기 (관리되지 않는 파일들 삭제하기, 커밋하
[문과 코린이의 IT 기록장] Git 심화 - 취소 및 되돌리기 (관리되지 않는 파일들 삭제하기, 커밋하지 않은 변경사항 되돌리기, reset 이후 복구 방법) 제대로 파는 Git & GitHub - by 얄코..
vansoft1215.tistory.com
2022.04.14 - [문과 코린이의, [Git] 기록] - [문과 코린이의 IT 기록장] Git 심화 - 태그 (커밋에 태그 달기, 원격의 태그와 릴리즈)
[문과 코린이의 IT 기록장] Git 심화 - 태그 (커밋에 태그 달기, 원격의 태그와 릴리즈)
[문과 코린이의 IT 기록장] Git 심화 - 태그 (커밋에 태그 달기, 원격의 태그와 릴리즈) 제대로 파는 Git & GitHub - by 얄코 - 인프런 | 강의 코알못도 따라올 수 있는 친절하고 쉬운 강좌! 현업
vansoft1215.tistory.com
[문과 코린이의 IT 기록장] Git 심화 - Brnach 심화 (Fastforward vs 3-way merge, 다른 브랜치에서 원하는 커
[문과 코린이의 IT 기록장] Git 심화 - Brnach 심화 (Fastforward vs 3-way merge, 다른 브랜치에서 원하는 커밋만 따오기, 다른 브랜치에서 파생된 브랜치 옮겨붙이기, 여러 커밋들을 ..
vansoft1215.tistory.com
1. log 추가 옵션들 알아보기
1) git log를 통해, 각 커밋마다 상세 변경내역까지 함께 보기 위해서?
$git log -p
2) git log로, 최근 n개의 커밋만 보고 싶은 경우?
$git log -n
3) git log로, 최근 n개의 커밋 상세 내역을 보고 싶은 경우?
$git log -p -n
4) 통계와 함께 보기
- 각 커밋마다 세부적인 내용가지 보이는 것은 아니지만, 어떤 파일이 어떻게 변화했는지 통계를 보여주는 방법
$git log --stat
- 이를 좀 더 간단하게 보고 싶다면?
$git log --shortstat
5) git log를 한 줄로 보고 싶다면?
$git log --oneline
# 이는 --pretty=oneline --abbrev-commit의 줄임
6) 커밋 내 변경사항들 중, 특정 검색어를 찾고 싶을 경우
$git log -S 검색어
7) 커밋 메시지 중, 특정 내용이 포함되었는지를 찾고 싶을 경우
$git log --grep 검색어
* 기타 제한 옵션
Git - 커밋 히스토리 조회하기
머지 커밋 표시하지 않기 저장소를 사용하는 워크플로우에 따라 머지 커밋이 차지하는 비중이 클 수도 있다. --no-merges 옵션을 사용하면 검색 결과에서 머지 커밋을 표시하지 않도록 할 수 있다.
git-scm.com
8) 프로젝트의 분기 내역 살펴보기
$git log --all --decorate --oneline --graph
# --all : 모든 브랜치 보기
# -- decorate : 브랜치,태그 등 모든 레퍼런스 표시 (decorate=no, decorate=short(기본), decorate=full)
# --graph : 그래프 표현
2. 차이 살펴보기
1) Working Directory의 변경사항 확인 방법
- 변경사항 내용들 확인
$git diff
- 변경사항 파일 목록들만 확인
$git diff --name-only
2) Staging area의 변경사항 확인 방법
- 즉 git add . 된 변경사항들의 경우, 확인하는 방법은 아래의 명령어를 사용한다.
$git diff --staged
# 이는 $git diff --cached와 같다
- Staging area에서 변경사항 파일 목록들만 확인하기 위해서는 아래의 명령어를 사용한다.
$git diff --staged --name only
3) 커밋간의 내용 차이 확인
$git diff (커밋1 해시, 커밋1 HEAD번호) (커밋2 해시, 커밋2 HEAD번호)
# 현재 커밋과 비교하려면 이전 커밋만 명시
$git diff --name -only (커밋1 해시, 커밋1 HEAD번호) (커밋2 해시, 커밋2 HEAD번호)
# 차이가 존재하는 파일명들만 확인 가능
4) 브랜치간의 차이 확인
$git diff (브랜치1) (브랜치2)
[ working directory, staging area의 변경사항 모두 없애는 방법 ]
$git reset --hard
3. 어떤 코드를 누가 작성했는지 파악하는 방법
1) 파일의 부분별로 작성자 확인하기
$git blame 파일명
2) 파일 내 특정 부분 지정해서 작성자 확인하기
$git blame -L (시작줄), (끝줄, 또는 +줄수) (파일명)
# git blame -L 10, 20 파일명
# git blame -L 10, +3 파일명 (추가로 몇 줄을 더 볼것인가)
3) 확장 플러그인(gitlens)를 활용해, 작성자 확인하기
- 확장 플러그인 들어가서 gitlens를 설치하면, 해당 줄에 마우스를 가져다 댔을 때, 작성자가 바로 뜬다.
4. git bisect를 통해, 이진 탐색 알고리즘으로 문제 발생 시점을 찾아내기
- 프로그램을 개발하던 중, 어느 시점부터 에러가 발생한다는 것을 확인했을 경우, 그 에러가 어떤 커밋부터 발생하는지를 찾아야 한다.
- 오류는 해당 커밋을 실행시켜봐야 알 수 있는데, 커밋마다 하나씩 모두 되돌아가면서 실행시켜 에러 여부를 확인해보기에는 시간이 많이 걸린다.
- 따라서, 에러 발생 시점을 효과적으로 찾기 위해 git bisect를 활용한다.
a. 이진 탐색 시작
$git bisect start
b. 현재 시점이 오류 발생 지점임을 표시
$git bisect bad
c. 오류 발생 의심 지점으로 이동
$git checkout (해당 커밋 해시)
d. 해당 지점이 오류 발생 지점인지 아닌지를 표시
$git bisect bad # 오류 발생 지점일 경우
$git bisect good # 오류가 발생하지 않은 지점인 경우
e. 원인을 찾을 때가지 이진 탐색 반복
- 해당 지점이 오류 발생 지점이라면, b 이전의 오류 발생 의심 지점을 다시 선정해서 이동
- 해당 지점이 오류 발생 지점이 아니라면, b와 c 사이의 중간지점으로 이동해서, 해당 지점이 오류 발생 지점인지 아닌지 표시
f. 최종적으로 오류 발생 지점을 찾으면, main으로 돌아감
$git bisect reset
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |