제대로 파는 Git & Github 6 🐙

Git & Github

Git 보다 잘 활용하기

🔖 Help와 문서 활용하기

Git 사용 중 잘 모르는 부분이 있을 때 도움을 받을 수 있는 기능

git help
  • 기본적인 명령어들과 설명
git help -a
  • Git의 모든 명령어들
  • j로 내리기, k로 올리기, :q로 닫기
git (명령어) -h
  • 해당 명령어의 설명과 옵션 보기
git help (명령어)
git (명령어) --help
  • 해당 명령어의 설명과 옵션 웹사이트에서 보기 ⭐️ 웹에서 열리지 않을 시 끝에 -w를 붙여 명시

📎 Git 문서 Url

https://git-scm.com/docs

📚 Git Book Url

https://git-scm.com/book/ko/v2


🔨Git의 각종 설정

global 설정과 local 설정

config를 –global과 함께 지정하면 전역으로 설정됩니다.

  • 특정 프로젝트만의 user.name과 user.email 지정해보기

설정값 확인

현재 모든 설정값 보기

git config (global) --list

에디터에서 보기 (기본: vi)

git config (global) -e

기본 에디터 수정

git config --global core.editor "code --wait"
  • 또는 code 자리에 원하는 편집 프로그램의 .exe파일 경로 연결
  • –wait : 에디터에서 수정하는 동안 CLI를 정지
  • 💡 git commit 등의 편집도 지정된 에디터에서 열게 됨

❗ 위의 에디터 설정을 되돌리려면

git config –global -e로 편집기를 연 뒤 아래 부분을 삭제하고 저장

⭐️ 맥에서 code로 VS Code가 실행되지 않을 시

  • VS Code에서 command + shift + p
  • shell로 검색하여 셸 명령: PATH에 code 명령 설치 선택

  • 영문: Shell Command: Install ‘code’ command in PATH

유용한 설정들

줄바꿈 호환 문제 해결

git config --global core.autocrlf (윈도우: true / 맥: input)

pull 기본 전략 merge 또는 rebase로 설정

git config pull.rebase false
git config pull.rebase true

기본 브랜치명

git config --global init.defaultBranch main

push시 로컬과 동일한 브랜치명으로

git config --global push.default current

단축키 설정

git config --global alias.(단축키) "명령어"
예시: git config --global alias.cam "commit -am"

프로답게 커밋 관리하기

🐰 어떻게 커밋하는게 좋을까요?

작업을 커밋할 때 권장사항 (Git Flow)

  1. 하나의 커밋에는 한 단위의 작업을 넣도록 합니다.
    • 한 작업을 여러 버전에 걸쳐 커밋하지 않습니다.
    • 여러 작업을 한 버전에 커밋하지 않습니다.
  2. 커밋 메시지는 어떤 작업이 이뤄졌는지 알아볼 수 있도록 작성합니다.

⭐ 커밋 메시지 컨벤션

널리 사용되는 커밋 메시지 작성방식

type: subject

body (optional)
...
...
...

footer (optional)

예시 :

feat: 압축파일 미리보기 기능 추가

사용자의 편의를 위해 압축을 풀기 전에
다음과 같이 압축파일 미리보기를 할 수 있도록 함
 - 마우스 오른쪽 클릭
 - 윈도우 탐색기 또는 맥 파인더의 미리보기 창

Closes #125

커밋 메세지 타입

feat : 새로운 기능 추가
fix : 버그 수정
docs : 문서 수정
style : 공백, 세미콜론 등 스타일 수정
refactor : 코드 리팩토링
perf : 성능 개선
test : 테스트 추가
chore : 빌드 과정 또는 보조 기능(문서 생성기능 등) 수정

⭐ Subject 커밋의 작업 내용 간략히 설명

⭐ Body 길게 설명할 필요가 있을 시 작성

⭐ Footer Breaking Point 가 있을 때 특정 이슈에 대한 해결 작업일 때

Git imoji 관련 사이트 : https://gitmoji.dev/


보다 세심하게 스테이징하고 커밋하기

아래 명령어로 hunk별 스테이징 진행

  • 옵션 설명을 보려면 ?입력 후 엔터
  • y 또는 n로 각 헝크 선택
  • 일부만 스테이징하고 진행해보기
  • git stats와 소스트리로 확인

변경사항을 확인하고 커밋하기

git commit -v
  • j, k로 스크롤하며 내용 확인
  • git diff –staged와 비교
  • 커밋 후 남은 헝크를 다른 버전으로 커밋해보기

커밋하기 애매한 변화 치워두기

변경사항 만들기

  • Tigers의 members에 Stash 추가
  • tomcats.yaml 추가 후 add
team: Tomcats

coach: Apache

아래 명령어로 치워두기

git stash
  • git stash save와 같음

원하는 시점, 브랜치에서 다시 적용

git stash pop

원하는 것만 stash 해보기

  • Leopards의 members에 Stash2 추가
  • Jaguars의 members에 Stash3 추가
  • 아래 명령어로 Stash2만 선택하여 스태시
git stash -p

메시지와 함께 stash

git stash -m 'Add Stash3'

stash 목록 보기

git stash list
  • 리스트상의 번호로 apply, drop, pop 가능
    • ex) git stash apply stash@{1}

Stash 사용법 정리

명령어 설명 비고
git stash 현 작업들 치워두기 끝에 save 생략
git stash apply 치워둔 마지막 항목(번호 없을 시) 적용 끝에 번호로 항목 지정 가능
git stash drop 치워둔 마지막 항목(번호 없을 시) 삭제 끝에 번호로 항목 지정 가능
git stash pop 치워둔 마지막 항목(번호 없을 시) 적용 및 삭제 apply + drop
git stash branch (브랜치명) 새 브랜치를 생성하여 pop 충돌사항이 있는 상황 등에 유용
git stash clear 치워둔 모든 항목들 비우기  

🛠 커밋 수정하기

마지막 커밋 메세지 수정

git commit --amend

커밋 메시지 변경

  • Panthers의 members에 Hoki 추가하고 스테이지
  • 커밋 메시지: 횻홍
  • 아래 명령어로 에디터 열어 커밋 메시지 변경
git commit --amend
  • 커밋 메시지: Add a member to Panthers

커밋에 변화 추가

  • Pumas의 members에 Poki 추가하고 스테이지
  • git commit –amend로 마지막 커밋에 포함
  • 커밋 메시지 아무렇게나 변경

⭐ 커밋 메시지 한 줄로 변경

git commit --amend -m 'Add members to Panthers and Pumas'

🧰 과거의 커밋들을 수정, 삭제, 병합, 분할하기

git rebase -i (대상 바로 이전 커밋)

  • 과거 커밋 내역을 다양한 방법으로 수정 가능

p, pick : 커밋 그대로 두기 r, reword : 커밋 메시지 변경 e, edit : 수정을 위해 정지 d, drop : 커밋 삭제 s, squash : 이전 커밋에 합치기