전성빈의 사리사욕

[git 첫 걸음] git의 기초 사용법 - 리모트 저장소 본문

백엔드 로드맵따라가기/버전 관리

[git 첫 걸음] git의 기초 사용법 - 리모트 저장소

Been2 2020. 11. 25. 00:21
728x90
  • 추가하기
  • 확인하기
  • Pull 과 Fetch
  • Push
  • 살펴보기
  • 이름 변경하기
  • 삭제하기

리모트 저장소

 

리모트 저장소는 인터넷등 네트워크 어딘가에 있는 다른 저장소를 이야기 합니다. 리모트 저장소를 관리할 줄 알아야 다른 사람과 함께 일할 수 있습니다. 저장소는 여러 개가 있을 수 있습니다. 부여 받은 권한에 따라 읽기, 쓰기 등이 가능하며 Push나 Pull을 통해 데이터를 다룹니다.

 

저장소를 관리한다는 것은 저장소를 추가, 삭제하는 것 뿐 아니라 브랜치를 관리하고 추적할지 말지 등을 관리하는 것을 말합니다.

 

 

추가하기

 

처음에는 원격 저장소가 존재하지 않습니다. 그럼 일단 깃헙 등 원격 저장소로 사용중인 곳에서 내용을 가져와야 합니다.

git clone 명령을 사용하면 원격 저장소의 내용을 복사해옵니다.

$ git clone https://github.com/been7270/webserver
Cloning into 'webserver'...
remote: Enumerating object: 400, done.
remote: Counting objects: 100%(400/400), done.
remote: Compressing objects: 100%(314/314), done.
remote: Total 400 (delta 73), reused 397 (delta73), pack-reused 0
...

 

git clone 명령을 실행하면 해당 원격 저장소의 내용을 현재 디렉터리의 하위 폴더로 만들어 저장합니다.

$ ls
webserver

 

URL 대신 별명을 정해놓고 편하게 사용할 수 도 있습니다.

$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin <주소> (fetch)
origin <주소> (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)

$ git fetch pb

remote add 명령을 통해 가져온 저장소 들은 checkout이나 merge 명령등을 통해 브랜치를 사용할 수 있습니다.

 

***** clone 명령과 remote add 명령의 차이점 *****

clone 명령은 물리적으로 폴더를 복사해서 로컬 저장소에 저장합니다.
하지만 remote add 명령은 별명에 url을 저장만 시킬뿐 따로 폴더를 복사해오지 않습니다.

$ git clone apple
$ git remote add bn banana
$ ls
apple

 

 

확인하기

 

현재 프로젝트에 등록된 리모트 저장소를 확인하기 위해서는 git remote 명령을 사용합니다. 저장소를 clone하면 'origin'이라는 저장소로 자동 등록 되기 때문에 origin 저장소를 볼 수 있습니다.

 

위 추가하기에서 webserver 라는 저장소를 가져왔기 때문에 현재 webserver가 존재합니다.

$ ls
webserver

$cd webserver
$git remote
origin

 

리모트 저장소가 여러개 있다면 여러개를 보여줍니다. 이렇게 여러 개의 저장소가 등록이 되어 있다면 다른 사람이 기여한 내용(Contributions)을 쉽게 가져 올 수 있습니다.

$ cd grit
$ git remote -v
bakkdoor  https://github.com/bakkdoor/grit (fetch)
bakkdoor  https://github.com/bakkdoor/grit (push)
cho45     https://github.com/cho45/grit (fetch)
cho45     https://github.com/cho45/grit (push)
defunkt   https://github.com/defunkt/grit (fetch)
defunkt   https://github.com/defunkt/grit (push)
koke      git://github.com/koke/grit.git (fetch)
koke      git://github.com/koke/grit.git (push)
origin    git@github.com:mojombo/grit.git (fetch)
origin    git@github.com:mojombo/grit.git (push)

 

 

리모트 저장소를 Pull and Fetch

 

리모트 저장소에서 데이터를 가져오려면 fetch 명령을 사용합니다.

$ git fetch <remote>

로컬 저장소에는 존재하지 않지만 리모트에 존재하는 데이터를 모두 가져옵니다. 그러면 리모트 저장소의 모든 브랜치를 로컬에서 접근할 수 있어서 언제든지 내용을 확인하거나 Merge할 수 있습니다.

 

git fetch 명령을 하면 데이터를 로컬로 가져오지만 자동으로 Merge 하지않기 때문에 로컬에서 하던 작업을 정리하고 나서 수동으로 Merge 해야합니다.

 

리모트 저장소의 데이터를 가져옴과 동시에 merge 하기 위해서는 git pull 명령을 사용합니다.

 

 

리모트 저장소에 Push 하기

 

프로젝트를 공유하고 싶을 때 Upstream 저장소에 Push 할 수 있습니다.

명령은 'git push <리모트저장소 이름> <브랜치 이름>' 입니다.

 

$ git push origin master

이 명령은 Clone한 리모트 저장소에 쓰기 권한이 있고, 클론 한 이후 아무도 Upstream 저장소에 Push하지 않았을 때만 가능합니다. 이러한 경우 Push하기 위해서는 다른 사람이 Push 한 작업을 가져와서 Merge 한 후에 Push 해야합니다.

 

 

리모트 저장소 살펴보기

 

git remote show <리모트 저장소 이름> 명령을 통해 구체적인 정보를 확일할 수 있습니다.

origin 같은 단축이름으로 실행하면 아래와 같은 정보를 볼 수 있습니다.

$ git remote show origin
* remote origin
  Fetch URL : 주소
  Push URL : 주소
  HEAD branch: main
  Remote branch:
    main tracked
  Local branch configured for 'git pulll:
    master merges with remote master

 

이 명령은 git pull을 실행할때 master 브랜치와 Merge 할 브랜치가 무엇인지 보여줍니다.

git pull은 리모트 저장소 브랜치의 데이터를 모두 가져오고나서 Merge하고 가져온 모든 저장소 정보도 출력합니다.

 

git remote show 명령에서 브랜치명을 생략하면 다수의 브랜치의 정보를 가져옵니다.

이는 다음에 필요할 때 학습하도록 하겠습니다.

 

리모트 저장소 삭제하거나 이름을 변경하기

 

git remote rename 명령으로 저장소 이름을 변경할 수 있습니다.

$ git remote rename pb paul
$ git remote
origin
paul

이렇게 이름을 변경하게 되면 로컬에서 사용하던 저장소의 브랜치 이름 또한 변경됩니다.

pb/master로 사용하던 브랜치는 paul/master로 변경됩니다.

 

 

리모트 저장소를 삭제할 때는 git remote remove 또는 git remoet rm 명령을 사용합니다.

$ git remote remove paul
$ git remote
origin

이렇게 리모트 저장소를 삭제하면 해당 저장소에 관련된 브랜치 정보다 모든 설정내용도 함께 삭제됩니다.

 

출처 : git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EB%A6%AC%EB%AA%A8%ED%8A%B8-%EC%A0%80%EC%9E%A5%EC%86%8C

 

Git - 리모트 저장소

원격 저장소라 하더라도 로컬 시스템에 위치할 수도 있다. “remote” 저장소라고 이름이 붙어있어도 이 원격 저장소가 사실 같은 로컬 시스템에 존재할 수도 있다. 여기서 “remote” 라는 이름은

git-scm.com

 

728x90