[U Stage] Week5 Github 특강 2 - github를 통한 협업 방법

윰진·2022년 10월 18일
0

NaverAIBoostCamp정리

목록 보기
17/30
post-thumbnail

day20_20221018

GOAL

  • 2회차: github를 통한 협업 방법
    • 실험 브랜치에서 작업 : git checkout "branch"
    • 마스터 브랜치에서 작업 : git checkout master
    • 브랜치 병합 : git checkout master && git merge "branch"
    • 충돌 상황 만들기 : 3 way merge
    • 원격 저장소 만들기 : github.com , gitlab.com
    • 지역 저장소의 비밀번호를 원격 저장소에 등록
      • ssh-keygen, id_rsa.pub 파일을 github의 계정에 ssh 키로 등록한다
    • 지역 저장소의 branch 와 원격 저장소의 branch 연결 : git push -u origin master
    • 동료 추가 : github setting 의 collaborators 에 동료 계정 추가
    • 충돌 상황 만들어보기

add의 3대의미
참고 add : commit 대기 상태로 만든다.
참고 add : untracked 를 tracked 로 만든다.
참고 add : 충돌이 해결되었음을 알려준다.

복습

  1. 폴더 생성
  2. 저장소 만들기 : git init
  3. 파일 생성 후 2개의 커밋 만들기
  • git commit 만 하면 editor 가 뜬다.
    • i key 를 누르고 입력 후 esc , :wq!
git add work1.txt
git commit -m "1"
git add work2.txt work3.txt
git commit -m "2"
  • 참고 log 조회 : git log --oneline , git log
  • 참고 branch log 조회 : git log -- all
  • 참고 달라진 부분 조회 : git diff
  1. 상태 조회 : git status
  • tracked & untracked 상태
    - tracked : git 이 file 을 tracking 하고 있음
    - untracked : tracking 되지 않는 파일
  1. auto adding : git commit -a -m "work 3"
  • git add 와 git commit -a 의 공통점과 차이점
    • git commit -a : tracking 중인 file 만 auto add 된다.

add의 3대의미
참고 add : commit 대기 상태로 만든다.
참고 add : untracked 를 tracked 로 만든다.
참고 add : 충돌이 해결되었음을 알려준다.

  1. .gitignore file 에 작성
    ignore 에 기록된 파일은 없는 셈 친다.

checkpoint
HEAD 가 가리키는 version 이 parent 다.

  • git checkout A
    • HEAD 가 A 를 가리키면 workspace 가 A 의 content 로 변경
  • git checkout master
    마지막에 작업한 내용을 지우고 싶다면 ?
  • HEAD -> master -> A 가 되도록 한다.
    • reset
      - reset B 를 하면 복원이 된다.
      checkout 은 HEAD 를 옮기고, reset 은 HEAD 의 branch 를 옮긴다.
  1. git reset COMMIT_ID : 해당 commit id 로 HEAD 의 Branch 를 옮긴다.

참고 git reflog : 현재까지 작업 기록을 찾을 수 있다.

HEAD 가 brach 를 가리키지 않을 때 reset 하면 어떻게 될까?

if ( attached ) { HEAD가 가리키는 branch 가 이동한다. }
else if ( dettached ) { checkout 과 같은 동작을 한다. }

branch 작업하기

  1. git branch exp
  • 나중에는 commit 몇 개 안할때도 branch 를 만들게 될겨 !
  1. git checkout exp

참고 git log --oneline --all --graph

사용자 command 정의
예시 git config --global alias.l "log --oneline --all --graph"

  • .bashrc 에서 alias 해도 된다.
    vim ~/.gitconfig 에서 alias 삭제
  • homedirectory 의 gitconfig
  1. 서로 다른 branch 에서 작업물을 만들고 커밋
  • exp 브랜치 : exp.txt
  • master 브랜치 : master.txt
  1. master brach 에서 exp 병합 : git merge exp

  2. 같은 파일을 수정 한 후에 병합

HEAD 가 가리키고 있는 version ( branch ) 를 대상으로 명령이 내려진다.

git checkout exp
git reset --hard COMMIT_ID
git reset master 
  • 참고 exp 가 master 를 merge
    • master 에 생성된 결과물을 exp 에 가져온다.
  1. 같은 파일에서 서로 같은 부분을 수정한 후 병합

  2. git commit


3 Way Merge

base 에서 분기된 branch master 와 branch 1 이 있을 때,
git merge command 를 실행하면 새로운 commit 이 생성된다.
{\Rightarrow} 3-way Merge

  • 이 때, 두 branch 에서 모두 수정이 발생한 commit 에서는 conflict 가 발생

     - 이미지 출처 : https://wikidocs.net/153693  

  • 충돌은 rebase , revert , cherry-pick 을 할 때도 생긴다.
    • 모두 3 way merge 를 바탕으로 함

Remote Repository

Local Repository 를 Remote Repository와 연결

git remote add origin "git address"
git remote -v 

branch pairing

git push --set-upstream origin master
git push

참고 원격 저장소와 연결 끊기 : git remote remove origin

origin master 란 ?

  • 마지막으로 push 된 version 을 가리킨다.
  • 'work 6' 작업은 local repository 에만 존재

commit message 변경

commit message 가 변경되면 commit id 도 변경된다.

git commit --amend -m "work seven"

A,B 작업자가 함께 작업하다가 누군가 먼저 push 했다면 ?

  • 먼저 commit된 작업 내용을 잃을 수 있기 때문에 git pull 을 먼저 해주어야 한다.
  • pull 을하면 git merge origin origin/master 가 실행되어 B1 과 B2 내용을 모두 가지고 있는 C 가 만들어진다.

Github Error 기록

1. 230113

Commit 한 상태에서 branch 변경 하다가 detached 상태가 되고 작업물은 사라진 상태

  • 마지막 commit id 로 checkout 해서 branch 생성 ( git checkout -b temp_work )
  • commit 하려고 했던 branch 와 merge

이 글은 네이버 커넥트재단 부스트캠프 AI Tech 교육자료를 참고했습니다.

0개의 댓글