→ git push -u origin main : 지역저장소의 main을 원격저장소와 연결
github의 settings에 들어가서 collaborators에서 같이 사용할 사용자를 등록하면 됨
write는 source code를 고칠 수 있는 것임
스터디 팀장님께서 'manuals'라는 협업 저장소를 만들어주심!!
→ git clone을 사용하여 협업저장소의 내용을 지역저장소에 복제
→ 새 파일을 만들어서 작성후, 협업저장소에 push하기
안에 추가적으로 메세지를 적을 수 있음(바꿨다던가 하는 내용)
4버ㅓㄴ쨰 5분 22초
💥a에서 파일을 만들다가 오류 발생...!
→ 오류 원인: a 폴더를 만든 후 git init .을 하지 않아서 깃이 버전관리를 시작하지 않았기 때문...ㅠㅠ 까먹지 말자!
💥git push를 하다가 오류 발생..!
→ 오류 원인: pull을 하지 않아서 repository에 있는 브랜치와 로컬 브랜치가 달라졌기 때문이다.
💥이번엔 git pull을 하다가 또 오류 발생..!
→ 오류 원인: 로컬 브랜치와 리모트 브랜치의 commit history가 관련이 없다고 판단었기 때문... 로컬 브랜치가 초기화 됐거나 새로운 저장소를 복제하여 git이 둘이 병합하는 것이 위험할 것 같다고 판단하여 병합을 거부한 것!
↳ 로컬 브랜치와 remote 브랜치를 병합하는 명령어 사용하면 해결됨git merge --allow-unrelated-histories origin/main
복제한다 = 클론(clone) = 클로닝(cloning) : 원격 저장소를 지역 저장소로 똑같이 가져오는 것
홈 디렉터리로 이동
저장소 복제 동시에 git_home 디렉터리 생성 가능:
$ git clone 원격저장소주소 git_home
$ git clone .
동일한 방법으로 git_office에도 복제
하나의 원격 저장소에 지역 저장소가 2개 이상 연결되어 있을 때, 지역 저장소에서 작업하려면 원격 저장소의 변경 사항을 먼저 가져와야 한다!
참고:
git switch master
git pull 명령 : 원격 저장소의 최신 커밋을 지역 저장소에 합침
git fetch 명령 : 원격 저장소의 정보를 가져옴
❓페치로 가져온 커밋 정보 확인은 어떻게?
-> git diff 명령을 사용해 현재 최신 커밋과 원격 저장소에서 가져온 커밋의 차이 살펴보기
git pull 명령 = git fetch 명령 + git merge origin/main 명령
=> git fetch를 사용해 원격 브랜치를 가져온 다음 git merge 명령을 사용해 원격 브랜치와 현재 브랜치를 합쳐 주는 것
$ cd ~/git_home
$ git log
//////////
(HEAD -> master, origin/master)
새로운 커밋 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 브랜치가 같은 커밋을 가리킴
$ 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'라는 최신 커밋이 지역 저장소에 반영된 것을 볼 수 있다!
협업을 위한 저장소 만들기
저장소에 브랜치 만들기
공동 작업자 추가하기
협업 시 다수가 같이 작업을 진행하므로 서로 의견을 남기고 확인한 후에 커밋을 병합