[1주차] Git

minLuna·2023년 3월 5일
0

엘리스 AI트랙 7기

목록 보기
8/62

본 자료는 박규하 코치님과 Elice 플랫폼의 자료를 사용하여 정리하였습니다.

Git

Git을 사용하는 이유

  • 효율적인 협업
  • 쉬운 버전 관리(버전을 지우지않고 보관)

Git의 특징

  • 가지치기와 병합
  • 가볍고 빠름
  • 분산작업
  • 데이터보장, 무결성보장(checksum-commit ID)
  • 준비영역(Staging area)
  • 오픈소스

Git 기본용어

  • 저장소 디렉토리 또는 파일들의 모음
  • 커밋 변경사항을 저장
  • 브랜치 독립적인 작업영역
  • 푸시 원격저장소에 업로드
  • 로컬저장소에 다운로드

Git 초기설정

  1. 사용자 정보 초기설정
$ git config --global user.name "elice"
$ git config --global user.email "rabbit@elice.io"
  • 프로젝트마다 다른 이름을 하고싶다면 --global을 빼고 입력
  1. 사용자 정보 확인
$ git config --list

Git 명령어

  • git init 기존 디렉토리를 Git Repository로 설정
    • 원하는 폴더로 이동 후 실행
    • 결과로 폴더에 .git 파일이 생성됨
  • git add 변경사항을 스테이징 영역에 추가
    • 전송할 파일이 많다면 git add .으로 전체 전송
  • git commit 스테이징 영역의 자료를 로컬저장소에 추가
    • -m "메시지“를 이용해 커밋메시지 메모 가능
    • 메시지에 오타나 누락된 파일이 있다면 git commit --amend를 사용하여 수정
  • git log commit 로그를 확인
    • --oneline을 붙이면 로그를 깔끔하게 출력함
    • --graph를 붙이면 그림으로 출력함
  • git status 상태 출력
  • git reset commit 되돌리기
    • --soft를 붙이면 commit 내용을 staging 영역으로 이동시킴
    • --mixed를 붙이면 commit 내용을 작업 영역으로 이동시킴
    • --hard를 붙이면 commit 내용을 삭제시킴
  • git diff commit된 파일 중 변경된 사항 비교

.gitignore 파일 작성

  • .gitignore 파일을 생성하여 Git에서 추적하지 않을 파일을 추가
  • 이 파일에 등록된 파일은 로컬저장소 및 원격저장소에서 제외

commit 메시지 정리하기

  • feat 새로운 기능 추가
  • fix 버그 수정
  • docs 문서 수정 및 추가
  • style 코드 스타일 관련 변경(코드 포맷팅, 세미콜론 누락 등)
  • refactor 코드 리팩토링
  • test 테스트코드, 리팩토링 테스트 코드 추가
  • chore 빌드 task 수정, 패키지 매니저 수정(.gitignore 수정 같은 경우)

fast-forward

  • 기존에서 수정된 부분만 바로 merge되는걸 fast-forward라고 함

Git 가지치기

Git Branch

  • git branch 브랜치 생성
    • -d를 붙이면 브랜치 삭제
  • git checkout 브랜치 전환

Git merge

  • git merge 브랜치 병합
    • git merge like_feature는 master 브랜치의 HEAD를 like_feature 브랜치의 HEAD로 이동

Merge conflict

  1. 서로 다른 branch에서 같은 파일을 변경하고 merge하면 충돌이 생김
  2. git status로 어떤 파일에서 충돌이 나는지 확인
  3. 충돌이 난 파일에 들어가 수정 후 <<<, ===, >>> 행을 삭제
  4. 수정한 파일을 저장하고 git add, git commit, git merge를 진행

Git 원격저장소

  • git clone [원격저장소 url] 원격저장소 받아오기
  • git remote push 로컬저장소에 저장된 사항을 원격저장소에 업로드
  • git remote add origin https://gitlab.com/group/project 원격저장소 추가(연결)
  • git remote -v 연결된 원격저장소 확인
    • git remote show origin
  • git remote rename [원래이름] [변경할이름] 원격저장소 이름변경
  • git remote rm [이름] 원격저장소 삭제

원격저장소 동기화

  • git pull origin master 원격저장소에서 데이터를 가져오고 병합
    • origin의 master branch를 가져옴
  • git fetch origin master 원격저장소에서 데이터를 가져옴
    • 꼭 git merge로 저장 필요
  • git push origin master 로컬저장소 내용을 원격저장소에 반영
    • origin 원격저장소에 master 로컬저장소 데이터를 반영
    • 다른사람이 먼저 push했으면 pull한 다음에 push 가능

origin이란?

  • git remote add origin에서 origin은 origin이라는 이름으로 연결한다는 뜻

Git 관련 Tip 정리

Git HEAD Pointer

snapshot 이동

  • git reset --[option] HEAD ~
    • --soft commit 영역의 내용을 staging 영역으로 이동
    • --hard commit 영역의 내용을 삭제

Git rebase

  • branch가 너무 많아져서 history 정리가 필요한 상황에 사용(그래프를 선형으로 만듦)

    • git checkout cat
    • git rebase master
  • rebase conflict
    1. 충돌나는 파일을 수정
    2. git add [파일이름]
    3. git rebase --continue

pull과 push의 자세한 이해

  • --set-upstream 원격저장소에 위치한 브랜치를 추적하기 위한 로컬저장소의 브랜치가 정해지지 않았을 때 사용
    • git branch --set-upstream-to=first/dog cat 원격의 first/dog와 로컬의 cat을 연결

모든 파일 삭제

  • git clean -f -d -x

작업영역의 파일 임시저장

  • git stash -> git stash apply
  • --index 옵션을 사용하면 Staging을 유지시켜줌

GCM(Git Credential Manager)

  • git config --system --unset credential.helper 잘못 지정한 인증정보를 다시 초기화
  • credential이란 인증정보를 저장해두고 자동으로 입력해주는 시스템

트래킹 브랜치

  • git fetch 또는 git pull을 이용하여 생기는 브랜치
profile
열심히

0개의 댓글