Github 스터디 4주차_협업

박신영·2023년 4월 8일
1

Github Study_2023

목록 보기
5/8

유튜브링크

🔶혼자 작업


git push -u origin main : 지역저장소의 main을 원격저장소와 연결

🔶같이 협업하기

  • github의 settings에 들어가서 collaborators에서 같이 사용할 사용자를 등록하면 됨

  • write는 source code를 고칠 수 있는 것임

  • 스터디 팀장님께서 'manuals'라는 협업 저장소를 만들어주심!!

    → git clone을 사용하여 협업저장소의 내용을 지역저장소에 복제

    → 새 파일을 만들어서 작성후, 협업저장소에 push하기

🔶PUSH & PULL

  • 한 컴퓨터에서 git bash를 2개 켜놓고 서로 다른 컴퓨터라고 가정하고 실습을 진행해보기
  • git4-col에서 a,b 라는 폴더를 만들어 그 안에서 작업
  • a에 work.txt 파일을 만들고 push, b에서 pull을 하지 않은 상태로 work.txt파일을 생성하여 다른 내용을 입력했을 경우 error가 발생함

    → head : 자신이 작업한 부분, commit id가 나와있는 곳 다른 사람이 작업한 commit의 변경점
  • git mergetool: 직접 병합해줌
  • nano 파일명: 수동으로 병합하고 싶은 경우
  • 수동으로 변경하여 내용을 변경하고 다시 add하면 파일의 충돌을 해결했음을 알릴 수 있음
  • 그 후에 git commit을 해주면 충돌을 했었다는 commit message를 만들어줌
    • 안에 추가적으로 메세지를 적을 수 있음(바꿨다던가 하는 내용)

      4버ㅓㄴ쨰 5분 22초



💥a에서 파일을 만들다가 오류 발생...!

→ 오류 원인: a 폴더를 만든 후 git init .을 하지 않아서 깃이 버전관리를 시작하지 않았기 때문...ㅠㅠ 까먹지 말자!

💥git push를 하다가 오류 발생..!

→ 오류 원인: pull을 하지 않아서 repository에 있는 브랜치와 로컬 브랜치가 달라졌기 때문이다.

💥이번엔 git pull을 하다가 또 오류 발생..!

→ 오류 원인: 로컬 브랜치와 리모트 브랜치의 commit history가 관련이 없다고 판단었기 때문... 로컬 브랜치가 초기화 됐거나 새로운 저장소를 복제하여 git이 둘이 병합하는 것이 위험할 것 같다고 판단하여 병합을 거부한 것!
↳ 로컬 브랜치와 remote 브랜치를 병합하는 명령어 사용하면 해결됨

git merge --allow-unrelated-histories origin/main

1 서로 다른 컴퓨터에서 원격 저장소 함께 사용하기

복제한다 = 클론(clone) = 클로닝(cloning) : 원격 저장소를 지역 저장소로 똑같이 가져오는 것

홈 디렉터리로 이동
저장소 복제 동시에 git_home 디렉터리 생성 가능:

$ git clone 원격저장소주소 git_home

  • 이미 만들어 놓은 지역 저장소로 복제하고 싶다면:

$ git clone .
동일한 방법으로 git_office에도 복제

하나의 원격 저장소에 지역 저장소가 2개 이상 연결되어 있을 때, 지역 저장소에서 작업하려면 원격 저장소의 변경 사항을 먼저 가져와야 한다!

참고:

git switch master

2 원격 브랜치 정보 가져오기

  • git pull 명령 : 원격 저장소의 최신 커밋을 지역 저장소에 합침

  • git fetch 명령 : 원격 저장소의 정보를 가져옴

❓페치로 가져온 커밋 정보 확인은 어떻게?
-> git diff 명령을 사용해 현재 최신 커밋과 원격 저장소에서 가져온 커밋의 차이 살펴보기

  • git merge 명령 : 브랜치 병합함

git pull 명령 = git fetch 명령 + git merge origin/main 명령
=> git fetch를 사용해 원격 브랜치를 가져온 다음 git merge 명령을 사용해 원격 브랜치와 현재 브랜치를 합쳐 주는 것

  • 원격 master 브랜치
    (현재 master 브랜치인 상태)

$ cd ~/git_home
$ git log
//////////
(HEAD -> master, origin/master)

  • HEAD -> master : 이 커밋이 지역 저장소의 최종 커밋
  • origin/main : 원격 저장소의 최종 커밋
    git_home 디렉터리가 원격 저장소를 복제한 상태 그대로이므로 지역 저장소와 원격 저장소의 최종 커밋은 동일

새로운 커밋 f3.txt 생성

$ vim f3.txt
$ git add f3.txt
$ git commit -m "create f3.txt"

$ git log --oneline
29a32ac (HEAD -> master) create f3.txt //지역 저장소의 최종 커밋은 create f3.txt
803e382 (origin/master) add d //아직 add d 커밋을 가리킴
ad1356c add c

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)

nothing to commit, working tree clean

//지역 저장소의 master 브랜치가 원격 master 브랜치의 버전보다 하나 앞서있음

$ git push

$ git log --oneline
29a32ac (HEAD -> master, origin/master) create f3.txt
803e382 add d
ad1356c add c
//푸시한 후에는 master와 origin/master 브랜치가 같은 커밋을 가리킴

  • 원격 브랜치 정보 가져오기 - git fetch

$ cd ~/git_office
$ git fetch

$ ls -al
//git_home에서 원격 저장소로 푸시했던 f3.txt 파일이 없음

$ git log --oneline
ad1356c (HEAD -> master) add d
/ 원격 저장소의 origin/main은 보이지 않음
이는 원격 저장소의 최신 커밋 정보를 가져왔지만 아직 지역 저장소에 합치지 않아서
git_office에 있던 최신 커밋(HEAD->main)만 나타나기 때문!
/

$ git status
//현재 브랜치가 origin/main에 비해 1개의 커밋이 뒤처져 있다

$ git diff HEAD origin/main
//현재 최신 커밋과 원격 저장소에서 가져온 커밋의 차이 살펴보기

$ git merge origin/main
//브랜치 병합

$ git log --oneline
29a32ac (HEAD -> master, origin/master) create f3.txt
803e382 add d
ad1356c add c
//'create f3.txt'라는 최신 커밋이 지역 저장소에 반영된 것을 볼 수 있다!

3 협업의 기본 알아보기

협업을 위한 저장소 만들기
저장소에 브랜치 만들기
공동 작업자 추가하기

4 원격 저장소에서 협업하기

  • 풀 리퀘스트 pull request, PR : 자신이 푸시한 커밋의 메시지를 남기는 것
    (협업 저장소에 커밋을 올리고 리뷰를 위한 메시지를 남기는 것)

협업 시 다수가 같이 작업을 진행하므로 서로 의견을 남기고 확인한 후에 커밋을 병합

profile
기술블로그

0개의 댓글