Git/Github Workflow

Jaeminst·2022년 2월 21일
0
post-thumbnail
post-custom-banner

1) Git/Github

Repository (저장소)

Directory 와 비슷한 개념?

Remote

원격 저장소, Github

  • Origin Repository = 나의 저장소, ex. My Github
  • Other Repository = 다른 저장소, ex. Pair Github

Local

개인 저장소, PC

  • Staging area = git commit 가능한 공간
  • Working directory = git add 하기전 git으로 관리하는 공간

Git의 세 가지 영역 및 상태

  • Committed
    기존에 Commit했던 파일을 수정하지 않은 상태

  • Modified
    기존에 Commit했던 파일을 수정한 상태

  • Staged
    commit이 가능한 상태

2) 명령어

  • Fork
    Github에서 다른 저장소의 파일을 Fork로 가져올 수 있다.

  • clone
    git clone {레파지토리 주소}
    git clone https://github.com/{github-name}/{Repository}.git
    git clone https://github.com/Jaeminst/git-workflow-test.git
    git clone git@github.com:{github-name}/{Repository}.git
    git clone git@github.com:Jaeminst/sprint-simple-git-workflow.git

  • status
    git status로 Local의 목록을 확인할 수 있다.

  • restore
    git restore {파일명}으로 commit 되지 않은 변경을 되돌린다.

  • add
    git add {파일명}으로 commit 가능한 상태로 추가한다.
    git add .으로 Staging area의 모든 파일을 추가한다.

  • commit
    git commit -m '메시지' -m 옵션으로 코멘트를 달고 commit 할 수 있습니다.

    훌륭한 Git commit 메시지의 7가지 규칙
    1) 공백라인으로 본문과 주제 구분
    2) 제목 줄을 50자로 제한
    3) 제목을 대문자로
    4) 제목 줄을 마침표로 끝내지 마십시오.
    5) 제목에 명령형 분위기를 사용하세요.
    6) 본문을 72자로 줄바꿈
    7) 행동을 사용하여 무엇을 어떻게, 왜 바꿨는지 표현하라.

  • reset
    git reset HEAD^으로 Github에 올라가지 않은 commit이면 reset으로 취소할 수 있습니다.
    HEAD^ : 가장 최근 commit
    HEAD^^^ : 가장 최근부터 3개의 commit
    HEAD~4 : 가장 최근부터 4개읠 commit
    git reset --hard, git reset --soft 학습필요.

  • push
    git push {origin} {branch}
    git push origin master으로 나의 Remote Repository의 master(tree)에 변경 사항을 업로드한다.
    git push upstream master으로 업스트림으로 등록된 레포지토리에 푸쉬.

  • log
    git log 현재까지 commit 된 내역들을 터미널 창에서 확인
    git log --oneline -n 3 최근 3개 커밋내역 확인

  • init
    기존 디렉토리를 Git Repository로 변환
    git init 현재 디렉토리를 init 하고, 초기화 한다.

  • remote add
    나의 저장소에 연결한다.
    git remote add origin {Repository 주소}
    다른 저장소에 연결한다.
    git remote add {other} {Repository 주소}
    등록된 저장소를 삭제한다.
    git remote remove {other} {Repository 주소}

  • remote -v
    연결된 모든 Remote Repogitory 확인
    git remote -v

  • pull
    Github 저장소에서 Local 저장소로 작업내용을 가져온다.
    받아오는 내용은 자동으로 병합(merge) 된다.
    git pull {shortname} {branch}

  • pull 사용 후 충돌 발생
    같은 부분을 변경하면 자동병합을 실패하며, 직접 수정 해주어야 한다.
    git status로 충돌 파일을 확인한다.
    그 다음 비주얼 스튜디오를 열어 수정한다.
    Add 하여 Staging area로 추가하고 commit하고, push 해주어야 한다.
    이때, 충돌로 commit된 파일은 자동으로 comment가 달린다.

  • merge
    git merge {branch}
    git merge upstream/main으로 현재 위치에서 업스트림으로 등록된 레포의 main 브랜치 가져옴

  • switch
    git switch -c {branch} 새로운 브랜치 생성
    git switch {branch} {브랜치}로 이동

3) Workflow

  1. Fork
    다른 저장소에서 나의 저장소로 가져온다.

  2. Clone
    나의 저장소에서 개인 저장소로 가져온다.

  3. Add
    개인 컴퓨터에 있는 파일을 추가한다.

  4. Commit
    특정 시점의 저장소 스냅샷을 기록한다.

  5. Push
    스냅샷을 Github에 등록한다.

  6. Pull Request
    등록된 변경코드를 다른 저장소에 변경 요청한다.
    내가 push한 변경 사항에 대하여 다른 사람들에게 알리는 것.
    Pull Request (=PR) 으로 수정반영을 요청한다.

혼자 작업 Workflow

  1. Fork : Github의 다른 저장소에서 Fork 해옵니다.
  2. Clone : Fork 해온 Repogit을 Local 저장소에 Clone을 만듭니다.
  3. Add : Local 저장소에서 파일을 새로 추가할 수 있습니다.
  4. Commit : Local 저장소에서 수정된 내용의 스냅샷을 저장합니다.
  5. Push : Commit된 스냅샷을 Remote 저장소에 넣습니다.
  6. 다른 사람이 보낸 PR을 적용할 수 있습니다.
  7. 다른 저장소의 Repogitory에서 위 작업을 통하여 PR을 보낼 수 있습니다.

함께 작업 Workflow

Local <-> Remote, Repogitory 연결

  1. init : 내 컴퓨터에서 생성한 디렉토리를 git의 관리하에 둘 수 있습니다.
  2. remote add origin {주소} : 로컬과 리모트 레포지토리를 연결합니다.
  3. remote add {other} {주소} : 다른 사람의 저장소와 연결할 수 있습니다.
  4. remote -v : 연결된 저장소들을 확인합니다.

작업 내용 가져오기

git pull origin master
git pull pair master
Pull {other} {branch} : Remote -> Local 받아오며 자동병합 됩니다.

충돌 해결하기

  1. git status 로 충돌 내용을 확인합니다.
  2. VSC로 파일을 열어보고 수정합니다.
  3. 커밋을 하기위해 add로 추가하고, commit 해줍니다.
  4. 커밋한 파일을 Remote Repogitory로 보내기 위해 push 해줍니다.

Ex) 예제

Repository의 commit되지 않은 변경 사항을 취소하기.

  • reset HEAD {file}
  • checkout -- {file}

협업을 위한 git 개념을 이해하기

  • branch, merge의 개념
  • remote repository에서 origin과 upstream의 차이점
profile
DevOps !
post-custom-banner

0개의 댓글