Potato

Git branch

  • 브랜치는 나뭇가지라는 뜻으로, 여러 갈래로 작업 공간을 나누어 독립적으로 작업할 수 있도록 도와주는 Git의 도구

장점

  1. 브랜치는 독립 공간을 형성하기 때문에 원본(master)에 대해 안전함
  2. 하나의 작업은 하나의 브랜치로 나누어 진행되므로 체계저긴 개발이 가능함
  3. Git은 브랜치를 만드는 속도가 굉장히 빠르고, 적은 용량을 소모함

브랜치의 조회, 생성, 삭제와 관련된 Git 명령어

  1. 조회
    • $ git branch : Local Repo의 브랜치 목록
    • $ git branch -r : Remote Repo의 브랜치 목록 확인
  2. 생성
    • $ git branch <브랜치 명> : 새로운 브랜치 생성
    • $ git branch <브랜치 명> <Commit_id> : 특정 Commit 기준으로 브랜치 생성
  3. 삭제
    • $ git branch -d <브랜치 명> : 병합된 브랜치 삭제 가능
    • $ git branch -D <브랜치 명> : 강제로 브랜치 삭제

git switch

  • 현재 브랜치에서 다른 브랜치로 HEAD 를 이동하는 명령어
    1. $ git switch <브랜치 명> : 다른 브랜치로 이동
    2. $ git switch -c <브랜치 명> : 브랜치 새로 생성 후 이동
    3. $ git switch -c <브랜치 명> <Commit_id> : 특정 Commit 기준으로 브랜치 생성 후 이동

git merge

  • 분기된 브랜치들을 하나로 합치는 명령어
  • master 브랜치가 상용이므로, 주로 master 브랜치에 병합
  • $ git merge <합칠 브랜치 이름>
    • 병합하기 전에 브랜치를 합치려고 하는, 즉 메인 브랜치로 swtich 해야 함
    • 병합에는 세 종류가 존재
      1. Fast-Forward
      2. 3-way Merge
      3. Merge Conflict

git-flow

  • 아래와 같이 5개의 브랜치로 나누어 소스코드를 관리
    • master : 제품으로 출시될 수 있는 브랜치
    • develop : 다음 출시 버전을 개발하는 브랜치
    • feature : 기능을 개발하는 브랜치
    • release : 이번 출시 버전을 준비하는 브랜치
    • hotfix : 출시 버전에서 발생한 버그를 수정하는 브랜치
  • 대규모 프로젝트에 적합한 구성

정리

  • 결국 어떤 브랜치 전략을 사용할 것 인지는 팀에서 정하는 문제
  • 소개된 git, github, gitlab 브랜치 전략이 아닌 우리 팀 고유의 브랜치 전략도 가능
  • 브랜치를 자주 생성하는 것을 강력히 권장하며, main(master) 브랜치 하나로만 작업하는 형태는 지양해야함

'Git' 카테고리의 다른 글

Git Advanced ( Git reset & revert 사용법)  (0) 2022.10.28
Git Advanced (Git undoing)  (0) 2022.10.28

과거 작업으로 돌아가기

Git reset

  • 프로젝트를 특정 Commit(버전) 상태로 되돌림

  • 특정 Commit으로 되돌아 갔을 때, 해당 Commit 이후 쌓았던 Commit 들은
    전부 사라짐

  • 명령어 : $ git reset [옵션] <Commit_id>

    1. --sort

      • 해당 커밋으로 되돌아가고 되돌아간 커밋 이후 파일들은 Staging Area로 돌려놓음
    2. --mixed

      • 해당 커밋으로 되돌아가고 되돌아간 커밋 이후의 파일들은 Working Directory로 돌려놓음
      • git reset 옵션의 기본값
    3. --hard

      • 해당 커밋으로 되돌아가고 되돌아간 커밋 이후의 파일들은 모두 Working Directory에서 삭제 -> 사용 주의해야함
      • 기존의 Untracked 파일은 사라지지 않고 Untracked로 남아있음

Git revert

  • git reset과의 차이점

    • 개념적 차이
      • reset은 커밋 내역을 삭제하는 반면, revert는 새로운 커밋을 생성함
      • revert는 Github를 이용해 협업할 때, 커밋 내역의 차이로 인한 충돌 방지 가능
    • 문법적 차이
      • $ git reset 5sd2f42라고 작성하면 5sd2f42라는 커밋으로 되돌린다는 뜻
      • $ git revert 5sd2f42라고 작성하면 5sd2f42라는 커밋 한 개를 취소한다는 뜻 (5sd2f42라는 커밋이 취소되었다는 내용의 새로운 커밋을 생성함)
  • 여러 내역 revert : $ git revert <start_id>..<end_id>

    • 역순으로 하나씩 Commit Revert 가능

'Git' 카테고리의 다른 글

Git Advanced ( branch란, branch 사용법 )  (0) 2022.10.28
Git Advanced (Git undoing)  (0) 2022.10.28

Git undoing

사전 준비

  1. Github에 원격 Repository를 생성한다.
  2. git clone 을 통해 Local Repository로 복사한다.

Git의 파일 관리 구분 2가지

  1. Untracked
    • git이 추적하지 않는 파일
    • 윈도우 기준으로 폴더 내부에 .git 폴더가 존재하면 자동으로 추적된다.
    • .gitignore 파일을 통해 폴더나 파일을 Untracked 상태로 만들 수 있다.

  1. Tracked
    • git이 변화를 감지하고 있는 상태
    • Tracked 상태는 아래 3가지로 나눌 수 있다.
      1. Unmodified
        • 수정하지 않은 파일 ( == 최신 파일 )
        • Local Git 에 올라간 파일과 비교하였을 때, 수정되지 않은 상태
      2. Modified ( vscode에선 Changes 로 표현 )
        • 수정한 파일
      3. Staged ( vscdoe에선 Staged Changes)
        • commit을 하기 위해 기다리는 상태
        • 이 영역을 Staging Area 라고 부름
    • 명령어 처리 : Local Git Repository
    # 터미널 창에서 진행
    
    현재 디렉토리를 Git 작업 디렉토리로 초기화        : $ git init
    Unmodified 상태를 Modified 상태로 변경하려면     : 파일 수정
    Modified 상태를 Staged 상태로 변경하려면         : $ git add
    Staged 상태를 Local Repository로 올리려면       : $ git commit
    현재 Git 파일 상태를 확인 하려면                 : $ git status
    Git 작업 내역 확인                              : $ git log
      - Commit id, 작성자, 날짜, commit message 확인 가능
      - 종료 명령어 : q
    • 명령어 정리 : Remote Git Repository

1. 최초 작업 시 
    Local Repo 에서 Remote Repo로 올리려면      : $ git remote add
    Remote Repo 에서 Local Repo로 올리려면      : $ git clone


2. 진행 중일 때
    Local Repo 에서 Remote Repo로 보내려면      : $ git push
    Remote Repo 에서 Local Repo로 가져오려면    : $ git pull

 

Working Directory 작업 단계 되돌리기

git restore ( 직전 작업 취소하기 )

  • Working Directory에서 수정한 파일을 수정 전(직전 커밋)으로 되돌리기
  • 이미 버전 관리가 되고 있는 파일만 되돌리기 가능
  • git restore를 통해 되돌리면, 해당 내용을 복원할 수 없으니 주의!
  • $ git restore <파일 이름>
  • [참고] git 2.23.0버전 이전에는 $ git checkout -- <파일 이름>

Staging Area ( 작업 단계 되돌리기 )

  • Staged 상태의 파일을 Modified 상태로 되돌리기 ( add 취소 )
  • root-commit 여부에 따라 두 가지로 나뉨
    • root-commit : 이전에 commit을 한 적이 있는 파일이면 True
    • root-commit이 없는 경우 : $ git rm --cached <파일 이름>
    • root-commit이 있는 경우 : $ git restore --staged <파일 이름>

Repository 작업 취소

  • Commit을 완료한 파일을 Staging Area로 되돌리기 ( commit 취소 )
  • 명령어 : $ git commit --amend
  • Staging Area에 다른 파일이 올라와 있는가에 따라서 두 가지로 나뉨
    • Staging Area에 새로 올라온 내용이 있다면 : 직전 Commit 의 메세지만 수정
    • Staging Area에 새로 올라온 내용이 있다면 : 직전 Commit을 덮어쓰기
      • 이 때, Staging Area의 모든 내용이 Commit에 포함 된다.
  • Commit 메세지 수정을 위해 Vim 편집기가 열림
    • 입력 모드(i) : 문서 편집 가능
    • 명령 모드(esc)
      • 명령 모드는 : 과 함께 사용한다.
      • 저장 후 종료 :wq
      • 강제 종료 :q!
        • 리눅스에서 특정 동작을 강제로 수행하게 하는 것 : !

'Git' 카테고리의 다른 글

Git Advanced ( branch란, branch 사용법 )  (0) 2022.10.28
Git Advanced ( Git reset & revert 사용법)  (0) 2022.10.28

+ Recent posts