egoing님 github 특강

yoonene·2022년 3월 20일
0

Boostcamp AI Tech

목록 보기
26/27

📝 목록

  • github 사용법 요약
  • 반찬
  • VSCode에서 Git 연결하기
  • VSCode에 리포지토리 Clone하기
  • 서로 다른 작업자가 다른 시간에 협업하기
  • 서로 다른 작업자가 같은 시간에 협업하기
  • 충돌 ⭐️

github 사용법 요약

  1. 내 컴퓨터에 저장소를 만듭니다.
  2. 커밋합니다.
  3. 원격 저장소를 만듭니다.
  4. 지역저장소와 연결합니다.
  5. 푸쉬합니다.
  6. 원격 저장소를 새로운 지역저장소로 복제합니다.

반찬

  • Git Graph
  • Snipaste

01. VSCode에서 Git 연결하기

  1. 로컬에서 리포지토리(폴더) 만들기
  2. vscode에서 폴더 열고 source control 탭에서 initial
  3. 파일 만들기
  4. source control 탭에 가보면 changes에 새로 만든 파일 있음.
  5. + 눌러서 stage에 add
  6. commit massage 쓰고 체크 눌러서 commit
  7. 깃헙에서 리포지토리 만들기, https 복사
  8. source control 탭의 땡떙땡 누르고 add remote
  9. 주소 붙여넣기 -(엔터)-> 원격 이름 짓기
  10. push
  11. 깃헙 보면 다 파일 올라가있음.

02. VSCode에 리포지토리 Clone하기

  1. 리포지토리 https 주소 복사
  2. vscode 새 창 열기
  3. source control 탭에서 Clone Repository 클릭
  4. 복사한 주소 붙여넣기
  5. 로컬에 저장할 폴더 선택 또는 생성 후 선택
  6. 열어보면 잘 clone된 걸 확인할 수 있음.

03. 서로 다른 작업자가 다른 시간에 협업하기

  1. 같은 리포지토리에 연결된 여러 로컬들
  2. 1번 로컬에서 파일을 commit하고 push하면
  3. 2번 로컬은 source control 탭의 땡땡땡을 누르고 pull 클릭해 pull한다.
  4. 그럼 버전이 같아짐.
  5. 그리고 자기 할 일 하기

+) 설정에서 autofetch를 true로 해놓으면 pull해야하는지 알 수 있음. 아니면 git graph에서 구름 다운로드 모양 누르셈.
여전히 내 로컬저장소 버전은 R1이지만 원격저장소는 L2로 한 버전 앞서있다는 것을 알려줌.
=> 글쿤! 하고 pull하면 됨.


04. 서로 다른 작업자가 같은 시간에 협업하기

  1. L이 이미 push했는데 pull하지 않고 작업한 걸 push하면 reject됨.
    최신 버전은 하나야 둘이 될 수 없어.
  2. pull하고 내꺼 push하면 merge commit이 됨.
    L이 한 작업과 R이 한 작업이 다 들어있는채로(병합된채로) LR이라는 새로운 이름의 버전으로 merge commit이 push됨.
  3. 그리고 L은 다음 작업할 때 pull하고 하면 됨.

+) push 전에 pull하는 습관!


05. 충돌 ⭐️

  1. 같은 파일을 같은 부분을 다른 사람이 동시에 고쳐서 나중에 하는 사람이 pull하면 충돌남.
  2. 충돌 나는 부분 고치고 (git mergetool 사용해서 비교해도 됨)
  3. stage에 올리고 체크 누르면 됨.

(BASE에서 수정한 부분을 알아서 수정해주지만 여러 로컬에서 같은 부분이 수정됐다면 충돌남. - 3way)

Head는 working directory가 어떤 버전과 같은지를 가리킨다.
master는 마지막 commit을 가리킨다.
Head는 현재 commit을 가리킨다.

  • git log 보기
    git log
    git log --oneline : head를 밑으로 그 부모들을 보기 때문에 head 밑으로만 나옴.
    git log --oneline --all : head 위도 다 볼 수 있음
    git log --oneline --all --graph : 그래프처럼 보기

  • 내 로컬 저장소 어디 보고 있는지: head

  • checkout은 head를 옮긴다.
    원하는 곳에 checkout하면 거기로 시간 여행

  • 시간 여행 끝내고 다시 돌아와서 작업을 재개할 때

    1. git checkout [commit_id] : head가 master를 가리키지 않고 예를 들어 v3를 가리킴. 그 버전으로 체크아웃 => Detached head state
      => 새로 commit하면 master는 이전 버전을 가리키고 head만 새로운 버전을 가리킴. 날라갈 수 있음.
      => 실험적인 작업을 하고 버리기에 유용함. 버릴 때 걍 git checkout master 하면 되는 것.

      (if 실험이 성공한 경우)
      "master"처럼 예를 들어 "exp"라는 branch를 하나 더 만들고 git checkout master와 exp를 왔다리 갔다리 하면 됨.
      (master로 exp 병합하는 법)
      exp 우클릭 & merge into current branch -> master와 exp에서 작업한 내용이 모두 master에.
      exp도 원격저장소에 올리고 싶으면 exp에 checkout branch하고 push하면 branch도 깃헙에 올라가는데, 실험적인 가지니까 굳이 올릴 일은 거의 없다.

    2. git checkout master : head가 master를 가리킴.
      로 돌아오면 되지. => Attached head state
      보통 2번 함. GUI로 하려면 브랜치 master 뱃지에 우클릭해서 checkout branch 로 체크아웃
  • +)

    • remote tracking branch (origin)
    • origin/master라는 브랜치는 git이 만든 브랜치로, 원격저장소의 현재 버전(?)이라고 할 수 있고 그냥 master는 로컬 저장소의 최신 버전.
    • pull = fetch + merge 이므로 pull을 하나 fetch하고 merge into branch (master에)
    • 팀원이 서로 다른 파일을 수정해야 conflict가 날 확률이 적다.
profile
NLP Researcher / Information Retrieval / Search

2개의 댓글

comment-user-thumbnail
2022년 3월 21일

최근에 git checkout 이 git switch/ restore로 변경되었습니다!
한번 보면 좋을 것 같아요~

1개의 답글