Git이란? 그리고 어떻게 사용하는가?

Dohyeon Kong·2024년 5월 8일
0

Git💾

목록 보기
1/1
post-thumbnail

Git

Git이란?
로컬에서 코드를 효율적으로 관리하기 위해서 사용되는 분산 버전 관리 도구로서 코드의 다양한 버전을 관리, 변경 히스토리를 추적, 변경사항을 안전하게 원격 저장소에 저장하는 기능을 제공한다.

일반적으로 파일을 새롭게 만들면서 하면 되는데 Git을 왜 사용하나요?🤔

  • 일반적으로 파일을 새롭게 만들면서 하는 것은 중복된 내용이 계속 쌓여가기에 용량면으로 비효율적이므로 자원이 낭비된다.

    하지만 Git을 사용하게 되면 Diff(변경사항)을 기반으로 내용만이 쌓여가기에 용량면으로 효율적이므로 자원을 아낄 수 있다.


Git 사용방법

  • Git을 사용하면 1. 로컬 코드를 관리할 수 있으며 나아가 2. Github에 자신이 만든 코드를 공유할 수 있거나 3. 동료 개발자가 만든 코드를 이어서 작성할 수 있다.

Git 시작하기 2가지 방법

    1. Remote에서 시작 <= 평상시 개발할 때 많이 사용하는 방법
    1. Local에서 시작

1. Remote에서 시작하는 방법

  • git clone : remote 저장소에서 local 저장소로 파일을 가져온다.

2. Local에서 시작하는 방법

  • git init : 현재 작업중인 디렉터리로 git으로 관리하겠다고 선언해준다
  • git branch -m main : 브랜치명을 main으로 변경한다.
  • git remote add origin 원격저장소의 보안통신주소 : 업로드한 Remote를 연결하기 위해 원격저장소의 보안통신주소를 지정한다.
  • git push -u origin main : 로컬 브랜치 main에 있는 파일들을 remote저장소에 있는 origin에 push한다.

Local에서 Git Branch 및 Remote 저장소 주소 기본 설정 방법

Local에서 Branch를 관리하는 방법

    1. Local에서 Branch를 설정하는 방법
    1. Remote에서 Branch를 가져오는 방법

1. Local에서 Branch를 설정하는 방법

  • Read(조회)
    - git branch -r : remote : Remote(원격) Branch 조회
    - git branch -l : local : Local(로컬) Branch 조회
    - git branch -a : all : Remote Branch + Local Branch 전체 조회
  • Create(추가)
    - git checkout -b 로컬저장소명 : Local Branch 생성
  • Delete(삭제)
    - git branch --delete 혹은 -D 브랜치명 : Local Branch 삭제
    - git push --delete 혹은 -D origin 원격저장소에 있는 브랜치명 : Remote Branch 삭제
    • origin : 원격 주소에 대한 Alias 별명, 별칭
    • 원격저장소에 있는 브랜치명 : 삭제하고자 하는 브랜치명

2. Remote에서 Branch를 가져오는 방법

git fetchgit fetch -p는 원격 저장소에 변경사항을 로컬 저장소에 가져오는 명령이라는 점에서는 똑같지만 약간의 차이가 있다.

  • git fetch : 원격 브랜치의 최신 상태를 로컬의 원격 추전 브랜치(Ex orgin/main)에 업데이트만 하고 현재 작업중인 브랜치의 작업 내용은 변하지 않는다.
    = 단순히 데이터 업데이트만 하고 로컬 브랜치에 자동으로 병합하지 않는다.
  • git fetch -p : -p 명령을 사용하여 원격 저장소에 삭제된 브랜치에 해당하는 로컬의 원격 추적 브랜치를 자동으로 삭제한다.
    = 원격 저장소에서 더이상 존재하지 않는 브랜치 정보를 로컬에서도 정리한다.

Local에서 Remote 저장소를 관리하는 방법

  • Read(조회)
    - git remote -v : verbose : 원격 저장소 상세 출력
  • Create(추가)
    - git remote add origin 원격저장소의 보안통신주소
    • origin : 원격 주소에 대한 Alias 별명, 별칭
    • 원격저장소의 보안통신주소 : 원격 저장소
  • Update(수정)
    - git remote set-url origin 새로 연결할 원격저장소의 보안통신주소
  • Delete(삭제)
    - git remote remove origin : 원격 저장소 연결 해제

Local에서 Git과 Github(Remote) 동기화

Pull를 통해 Local과 Remote와의 동기화를 진행한다.
Pull = Fetch + Merge로 이루어진 명령어

  • Fetch : 원격(Remote) github 저장소에서 생성/삭제된 브랜치를 가져오고 최신 코드 모두 가져온다.
  • Merge : 로컬에 가져온 "원격 브랜치의 최신 코드"를 "로컬 브랜치의 구식 코드"에 합치는 작업을 의미한다.
    - 명령어를 작성하는 곳은 로컬 브랜치에 위치해있어야 하며 git merge 명령어를 사용할 때 merge 뒤에 원격 저장소의 Alias를 작성해주면 된다. 아니면 git merge fetch-head를 사용해도 된다.

Local에서 Git(Local)과 Github(Remote) 동기화 시 Conflict 충돌해결 방법

  • 방법 1. Rebase : 현재 나의 작업물의 1. Base(기준이 되는)를 다시 재설정한 뒤, 2. 다시 커밋을 쌓는다.
    단점으로 내가 작업했던 커밋들이 다시 생성되기에, 히스토리가 리셋된다.
  • 방법 2. Merge : 현재 나의 작업물과 Remote에 업로드되어 있는 상대 작업물 모두 존중하고, 머지 커밋을 만든다.
    단점으로 머지 커밋이 생성되어서 머지 수가 많아짐에 따라 커밋이 더러워진다.
    => Merge 방법을 주로 사용한다.

충돌발생 시 입력해야 하는 명령어 순서

  1. git pull -> 2. git status -> 3. 해당 충돌난 파일들을 수정한다. -> 4. git add . - > 5. git commit -> 6. git push
  • git pull 명령어를 통해 Remote 저장소의 최신 상태를 가져오고 내 로컬 저장소와 병합한다.
  • git status 명령어에서 충돌난 파일들이 무슨 파일인지 확인한다.
  • git add . 명령어를 통해 staging 영역으로 보내준다.

Git reset 명령어

  • 스테이징된 파일만 취소하고 싶을때
git reset
  • 특정 커밋으로 HEAD를 이동시키고 스테이징된 변경 사항을 취소하고 싶을 때
git reset <commit>
  • 특정 커밋으로 HEAD를 이동시키고, 스테이징된 변경 사항과 워킹 디렉토리의 변경 사항을 모두 삭제하고 싶을 때
git reset --hard <commit>
  • 특정 커밋으로 HEAD를 이동시키고, 인덱스와 워킹 디렉토리를 유지하고 싶을 때
git reset --soft <commit>

Git branch 이름 변경

  • Local에 있는 branch 이름 변경하기
git branch -m oldbranch newbranch
  • Remote에 존재하는 old branch 삭제하기
git push origin :oldbranch
  • new branch push 하기
git push origin newbranch

Git의 흐름

  • 위 그림은 로컬 환경에 존재하는 영역들이다.
  • P.S) 원격 저장소에서 데이터를 가져오게 되면 원격 저장소의 변경사항이 로컬 작업 디렉터리에 바로 적용이 된다.
    git pull(혹은 fetch + merge)는 스테이징 영역을 거치지 않고 바로 작업 디렉터리로 들어온다.

Git Commit 메세지 참고

profile
천천히, 꾸준히, 그리고 끝까지

0개의 댓글