여러 디렉토리에서 원격 저장소 공유하기 

 

프로그래밍 작업을 하는 경우 1명이 하는 경우보다 여러명이서 다같이 작업을 공동을 진행하는 경우가 많고,  1인 프로젝트라고 하더라도 작업하는 컴퓨터가 1대보다 많은 경우도 종종 있다.(예를 들어 집 컴퓨터와 회사 컴퓨터 등)

이런 경우에 GitHub에서는 이런 협업 관리를 어떻게 해주는지에 관해 알아보자.

일단 지역 저장소에서 작업을 하기 위해서는 원격 저장소에 저장되어 있는 파일들을 가져와야 한다. 여기에서는 이전에 만들었던 GitHub의 test-1이라는 repository를 사용할 것이다. 

초록색으로 Code라고 쓰여진 버튼을 클릭하면 clone이라는 항목에 HTTPS 에 들어가서 해당 주소를 복사할 수 있다.



git bash로 들어와 홈 디렉토리에서 git_home 디렉토리를 만들고 여기에 코드 내용들을 다운 받을 것이다. 

$ git clone 복사한 주소 git_home

별도로 git_home이라는 디렉토리를 만들지 않아도 위의 명령어를 통해서 자동으로 생성이 되고 그 안에 GitHub test-1에  올려져 있는 파일들의 정보들이 다운받아진다. 

마찬가지로 홈 디렉토리로 돌아가서 git_office라는 디렉토리를 만들고 코드 내용들을 다운 받는다.

$ git clone 복사한 주소 git_office 



git_home으로 들어가서 git log를 통해서 하나도 커밋한 적이 없는 git_home에 어떤 내용들이 저장되어 있는지 확인한다. 

 

 

 

 

 

지역 저장소에서 작업하고 업로드하기 

 

git_home과 git_office 디렉토리에서 별도의 작업을 하고 GitHub에 올려보자. 

이전에 지역 저장소에서 텍스트 파일을 수정했던 것과 동일한 방식으로 vim을 통해서 f1.txt 파일을 임의로 수정하고,
(한 줄을 추가하여 1를 입력하였다.) 커밋메세지를 "add c"로 하여 push해보자.

$ vim f1.txt
$ git commit -am "add 1"
$ git push


이렇게 push 명령어까지 완전하게 실행이 되면 GitHub 페이지에서도 변화된 것을 확인할 수 있다.

 

 

 

 

지역 저장소에서 변화된 내용 pull 하여 확인하기 

 

git_office를 만들고 나서 f1.txt 파일을 수정하였으므로, 수정된 커밋은 현재 git_office에 반영이 되어있지 않은 상태이다. git_office를 가장 최신의 GitHub Repository와 동일하게 업데이트 하기 위해서는 git pull이라는 명령어를 입력하면 된다. 

일단 git_office 디렉토리 안으로 들어가 git pull 명령어를 입력해본 후 f1.txt 파일이 변화했는지 확인해보자.

$ cd .. 
$ cd git_office 
$ git pull
$ cat f1.txt




위의 이미지를 확인하면 f1.txt에 git_home에서 수정한 1이 입력되어 있는 것을 확인할 수 있다. 또한 git log를 통해서  커밋도 포함이 되어 있는 것을 확인 가능하다.

 

 

 

 

 

원격 브랜치 정보 가져오기 

 

서로 다른 사람들끼리 작업을 하는 경우에 확실하게 내용을 확인하지 않고 바로 가져온다면, 자신이 지역저장소에서 남겨두고 싶었던 내용이 수정되어 사라질 수도 있다. 이를 위해서 일단 새로워진 내용의 변화만을 가져와 사용자가 이것을 확인하고  추후에 병합할 수 있도록 할 수 있다. 

일단 git_home 디렉토리에서 f3.txt 파일을 생성하여 안에 A,B,C를 입력하고 커밋까지 완료한다. 

$ cd ~
$ cd git_home
$ vim f3.txt
$ git add f3.txt
$ git commit -m "new file f3.txt"



그 이후에 

$ git log --oneline

명령어를 입력해서 보면 지역 저장소는 "new file f3.txt"를 가리키고 origin은 하나 이전의 커밋을 가리키고 있는 것을 확인할 수 있다.



push 명령어를 통해서 파일을 업로드 한 뒤에 다시 확인하면 이제는 둘이 같은 커밋을 가리키고 있는 것을 확인할 수 있다.

$ git push 
$ git log --oneline


git_office 디렉토리로 들어와 새로운 내용의 정보를 가져오는 fetch 명령어를 사용하고 git log --oneline을 해보면 git_home과 달리 origin이 가리키는 커밋이 없는 것을 확인할 수 있다.

$ cd ~
$ cd git_office
$ git fetch
$ git log --oneline

 

$ git status 

명령어를 입력하면 GitHub 페이지에 비해서 최신 커밋이 1개 밀려 있음을 알려주는 내용을 git bash에서 출력한다. 



가져온 정보에 대해서 git log로 확인을 해보자.

$ git checkout FETCH_HEAD
$ git log

 

 

 

가져온 정보 병합하기

 


출력 결과를 통해서 현재 GitHub 페이지의 원격 저장소가 어느 커밋을 가리키고 있는지 확인할 수 있다. 확인 후 최신 커밋을 현재 git_office 브랜치에 병합하기 위해서는 다시 master 브랜치로 checkout 한 뒤에 merge 명령어를 통해서 병합할 수 있다. 

 

$ git checkout master
$ git merge FETCH_HEAD

 

728x90
반응형

'버전 관리 > git & github' 카테고리의 다른 글

GitHub 연동하기 2  (0) 2021.01.17
GitHub 연동하기 1  (0) 2021.01.15
깃과 브랜치 3  (0) 2021.01.14
git과 브랜치 2  (0) 2021.01.13
git과 브랜치(Branch) 1  (0) 2021.01.11
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기