본문 바로가기

git

[github] 원격저장소를 로컬저장소로 가져오기(fetch)



git을 입문하고 와서 항상 원격 저장소에서 로컬저장소로 clone만 하고 사용하고 있었는데, 그러면 안드로이드 어플이나, 기타 다른 툴의 저장소와 폴더가 같지 않아서 프로젝트 열기도 귀찮고, 새로 생성된 프로젝트를 다시 폴더에 옮겨서 저장하고 그걸또 push 하는 엄청 귀찮은 행동을 하다가, 드디어 원격 저장소의 branch와 로컬 저장소의 branch를 연결시키는 법을 알아내어서, 기록하고자 글을 씁니다. 


즉, 어떤 툴을 사용할 때, 프로젝트가 들어있는 폴더 자체를 로컬 저장소로 만들고, 원격저장소와 연결하여, 여러 컴퓨터에서 작업 할 때, 각 컴퓨터에서 새로 생성한 프로젝트들을 간편하게 push 하기 위해 고민하다가 알아낸것을 기록하는 것 입니다.


이미 생성된 원격 저장소가 있고, 그 저장소에 프로젝트 폴더들이 있다고 가정하겠습니다. 그럼 일단 과정을 살펴보면,


1. 각 툴의 프로젝트 폴더에 들어가서 오른쪽 클릭 후 gitbash here을 눌러줍니다.



2.  git bash가 뜨면, git init 과 git remote (저장소별칭) (원격저장소 주소) 를 입력 해줍니다. 두번째 명령어에서 remote 명령어는 원격 저장소와의 어떤 행위를 할 때 입력하는 명령어 입니다. 그리고 이 명령어를 입력하면 아무런 반응이 없는데, 그렇다면 원격저장소와 성공적으로 연결 된 것입니다.



3. git remote -v 를 통해 잘 연결되었는지 확인 해 줍니다.



4. 그 다음은, 원격저장소에 있는 프로젝트들을 로컬저장소로 받아 올 차례인데, 원격저장소에서 로컬저장소로 커밋된 정보들을 가져와 병합하는 명령어는 


git fetch

git pull


두가지가 있습니다. git pull 명령어는 원격저장소의 정보를 가져오면서 동시에 로컬 브랜치에 저장까지 해 주지만, 병합되면서 어떤 내용이 바뀌었는지 알 수 없습니다. 따라서 


git fetch

git merge


명령어를 통해서 원격저장소의 branch를 가져오고(fetch), 로컬저장소에 병합시키고(merge), 병합시키는 과정에서 충돌이 일어나면 git diff 명령어를 통해서 변화된 부분을 알 수 있습니다.



위의 사진에서 보면 먼저 


1. git fetch 명령어를 통해서 원격저장소의 branch를 가져옵니다.

2. git branch -a 명령어를 입력 해 보면, 원격 저장소의 branch가 빨간색으로 보입니다. 

3. git merge (선택하고싶은 로컬 branch) 를 입력하면 로컬 branch에 원격저장소의 내용이 들어갑니다. 

4. 실제 폴더로 가면 프로젝트 폴더들이 다운로드 된 것을 볼 수 있습니다.


이렇게 하면 로컬과 원격 저장소가 연결이 되며 새로운 프로젝트를 생성한 후 git bash를 통해 금방 commit, push를 할 수 있습니다. 사실 안드로이드 스튜디오를 git과 연동시킬 수 있지만, 그렇게 하면 프로젝트 폴더 안의 내용 자체가 원격저장소에 저장이 됩니다. 그게아니라 저는 프로젝트 폴더별로 저장시켜놓고 각 컴퓨터에서 다운로드 받아서 사용하고 수정사항을 업로드 하고 싶어서 이 내용을 공부하게 되었습니다.

'git' 카테고리의 다른 글

git init 취소하기  (0) 2017.01.29