2023/07/31 TIL

김도현·2023년 7월 31일
0

TIL

목록 보기
10/76

금일 배운 것

제대로 파는 Git & GitHub - by 얄코 11 ~ 15(完)까지

11. 분석하고 디버깅 하기

1. log 더 자세히 알아보기

옵션들을 활용한 다양한 사용법

각 커밋마다의 변경사항 함께 보기

git log -p

최근 n개 커밋만 보기

git log -(갯수)

통계와 함께 보기

git log --stat
  • 더 간략히: --shortstat

한 줄로 보기

git log --oneline
  • --pretty=oneline --abbrev-commit의 줄임
    변경사항 내 단어 검색
git log -S (검색어)
  • George로 검색
    커밋 메시지로 검색
git log --grep (검색어)

자주 사용되는 그래프 로그 보기

git log --all --decorate --oneline --graph
  • --all : 모든 브랜치 보기
  • --graph : 그래프 표현
  • --decorate : 브랜치, 태그 등 모든 레퍼런스 표시
    • --decorate=no
    • --decorate=short : 기본
    • --decorate=full
  • 위에 있는것들을 조합하여 사용 가능

포맷된 로그 보기

포매팅 옵션들 살펴보기

얄코 포맷

git log --graph --all --pretty=format:'%C(yellow) %h  %C(reset)%C(blue)%ad%C(reset) : %C(white)%s %C(bold green)-- %an%C(reset) %C(bold red)%d%C(reset)' --date=short
  • daterelative로 바꿔보기
  • 단축키로 등록하여 사용

2. 차이 살펴보기

git diff

워킹 디렉토리의 변경사항 확인

git diff

파일명만 확인

git diff --name-only

스테이지의 확인

git diff --staged
  • --cached와 같음

커밋간의 차이 확인

git diff (커밋1) (커밋2)
  • 커밋 해시 또는 HEAD 번호로
  • 현재 커밋과 비교하려면 이전 커밋만 명시
  • 오류 발생시 비교를 통해 찾기 편함

브랜치간의 차이 확인

git diff (브랜치1) (브랜치2)

3. 누가 코딩했는지 알아내기

git blame

각 라인의 작성자를 확인합니다.

파일의 부분별로 작성자 확인하기

git blame (파일명)

특정 부분 지정해서 작성자 확인하기

git blame -L (시작줄) (끝줄, 또는 +줄수) (파일명)

⭐️ VS Code의 GitLens 확장 사용해보기

4. 오류가 발생한 시점 찾아내기

git bisect

이진 탐색 알고리즘으로 문제의 발생 시점을 찾아냅니다.

  • 오류를 못 찾을시 시작점과 오류 발생지점의 중간 위치로 자동으로 이동
    시작
git bisect start

오류발생 지점임을 표시

git bisect bad

의심 지점으로 이동

git checkout (해당 커밋 해시)

오류 발생 않을 시 양호함 표시

git bisect good

♻️ 원인을 찾을 때까지 반복

  • git bisect good/bad
    종료
git bisect reset

12. Git의 추가 기능들

1. Git Hooks

Git Hooks

Git상의 이벤트마다 자동으로 실행될 스크립트를 지정합니다.
📁 Git Hooks 폴더 보기
프로젝트 폴더 내 .git > hooks 폴더 확인

  • 파일 끝에 .sample을 없애면 훅 실행파일이 됨

gitmoji-cli활용

여기를 확인해서 사용

2. Git Submodules

서브모듈

  • 프로젝트 폴더 안에 또 다른 프로젝트가 포함될 때 사용
  • 여러 프로젝트에 사용되는 공통모듈일 때 유용

사용해보기

1. 두 개의 프로젝트 생성

  • 양쪽 모두 파일 생성 및 작성 뒤 커밋
  • 두 프로젝트 모두 GitHub에 각각 레포지토리 만들어 올리기
    • 혹은 GitHub에서 생성해도 좋음

2. main-project에 서브모듈로 submodule 프로젝트 추가

주 프로젝트 디렉토리상 터미널에서 아래 명령어 실행

git submodule add (submodule의 GitHub 레포지토리 주소) (하위폴더명, 없을 시 생략)
  • 프로젝트 폴더 내 서브 프로젝트폴더와 .gitmodules 파일 확인
  • 스테이지된 변경사항 확인 뒤 커밋
  • 양쪽 모두 수정사항 만든 뒤 주 프로젝트에서 git status로 확인
    • 서브 프로젝트의 변경사항은 포함되지 않음 확인
  • 주 프로젝트에서 변경사항 커밋 뒤 푸시
  • 서브 프로젝트에서 변경사항 커밋 뒤 푸시
  • 주 프로젝트에서 상태 확인
  • 주 프로젝트에서 커밋, 푸시 뒤 GitHub에서 확인

3. 서브모듈 업데이트

1. 주 프로젝트 새로운 곳에 clone하기

2. 아래 명령어들로 서브모듈 init 후 클론

git submodule init (특정 서브모듈 지정시 해당 이름)
git submodule update

3. GitHub에서 서브 프로젝트에 수정사항 커밋

주 프로젝트에서 아래 명령어로 업데이트

git submodule update --remote
  • 서브모듈 안에 또 서브모듈이 있을 시: --recursive 추가

13. GitHub 잘 사용하기

1. 프로젝트와 폴더에 대한 문서

README.md 를 활용한 문서화

markdownguide.org
GitHub 제공 가이드

1. 프로젝트 최상위 폴더에 README.md 파일 작성

2. VS Code에서 미리보기 기능

3. 푸시한 뒤 GitHub에서 프로젝트 페이지 살펴보기

4. 폴더 만들어 폴더별 README.md 만들어보기

2. 풀 리퀘스트와 이슈

1. Pull request

변경사항을 merge하기 전 리뷰를 거치기 위함

  • 팀원들의 동의를 거친 뒤 대상 브랜치에 적용

풀 리퀘스트 사용해보기

1. 새로운 브랜치 생성 후 변경사항 커밋하여 푸시
2. GitHub 레포지토리 페이지에서 Compare & pull request 버튼 클릭
  • 또는 ~ branches에서 New pull request 클릭
3. 메시지 작성 후 Create pull request 클릭

풀 리퀘스트 검토 후 처리하기

1. GitHub 레포지토리 페이지에서 Pull requests 탭 클릭
2. 대상 풀 리퀘스트 클릭하여 내용 검토
  • 의견이 있을 시 코멘트 달기
  • 반려해야 할 시 Close pull request
  • 승인할 시 Merge pull request

2. Issue

버그나 문제 제보, 추가할 기능 등의 이슈 소통
예시

  • 네이버 지도 API 예제
  • Flutter

이슈 작성해보기

1. GitHub 레포지토리 페이지에서 Issues 탭 클릭
2. 필요시 label 또는 milestone 생성
  • milestone: 이슈의 주제 묶음 (특정 목표 등)
3. 이슈 작성
  • 필요시 label, milestone, asignee 지정
4. 이슈 확인 후 처리
  • 코멘트 달기
  • 관련 개발 착수 (브랜치명이나 커밋 footer에 이슈 번호 반영)
  • 해결 뒤: Close issue

4. GitHub에 블로그 만들기

GitHub Pages 사용하기

나의 GitHub Page 만들기

1. 레포지토리 생성
  • ❗️ 레포지토리명: (내 아이디).github.io로 지을 것!
  • 로컬로 클론
2. 최상위 디렉토리에 index.html 작성
  • 💡 VS Code 팁: ! 입력하고 엔터 누르면 기본 HTML 템플릿 생성
  • 내용 작성 뒤 push
3. https://(내 아이디).github.io에서 사이트 확인

14. GitHub 제대로 활용하기

1. SSH로 접속하기

SSH 프로토콜을 통한 인증

  • 공개키 암호화 방식 활용
  • username과 토큰 사용할 필요 없음
  • 컴퓨터 자체에 키 저장

    생성 및 등록

2. GPG로 커밋에 사인하기

GPG 키를 통한 검증

GitHub 커밋 내역 살펴보기

  • 로컬에서 푸시한 커밋과 GitHub에서 작성한 커밋 비교
  • Verified : 신뢰할 만한 출처에서 커밋되었다는 인증

GPG 사용

1. GPG 툴 설치

2. 생성

생성 및 등록

3. 사인하기

커밋에 사인: 명령어에 -S 옵션 추가

git commit -S -m '(메시지)'

태그에 사인: 명령어에 -s 옵션 추가

git tag -s (태그명) (커밋 해시) -m (메시지)

3. GitHub Actions

GitHub Actions를 사용한 자동화

CI/CD : 지속적 통합과 배포

1. GitHub Actions 살펴보기

a. github.io 페이지의 액션
  • 해당 레포지토리 페이지에서 Actions 탭 살펴보기
  • 새로운 커밋 푸시한 직후 다시 살펴보기
b. 다른 프로젝트에서 액션 추가해보기
  • Actions 탭에서 액션들 살펴보고 적용해보기
  • Marketplace 살펴보고 적용해보기
  • 커밋 후 pull하여 로컬에서 확인

4. GitHub 추가 팁

1. OctoTree

2. GitHub CLI

로그인/로그아웃

gh auth (login/logout)

레포지토리들 보기

gh repo list

프로젝트 클론

gh repo clone (사용자명)/(레포지토리명)

프로젝트 생성/삭제

gh repo (create/delete)

이슈 목록 보기

gh issue list

이슈 열람/닫기

gh issue (view/close) (이슈 번호)

이슈 생성

gh issue create

풀 리퀘스트 만들기/목록 보기

gh pr (create/list)

풀 리퀘스트 보기/코멘트/닫기/병합

gh pr (view/comment/close/merge) (PR 번호)

0개의 댓글