로컬 저장소와 원격 저장소의 상호작용 개념

Hyun·2021년 10월 16일
0

깃 & 깃허브

목록 보기
5/7

Branch 개념을 원격저장소(github)에 접목시켜 실질적인 협업을 할 수 있다.
원격 저장소는 그저 또 다른 repository(저장소)이고, 협업은 repository 간의 상호작용이다.

repository 간의 상호작용의 종류

  • git remote: 원격저장소에 조회(추가)하기
  • git push: 원격저장소에 밀어넣기
  • git pull: 원격저장소를 갖고 와서 합치기
  • git fetch: 원격저장소를 일단 갖고만 오기
  • git clone: 원격저장소를 복사하기

실습

remote 폴더를 만들고 git init 명령어를 실행한다. test.txt 파일을 생성한 후, "처음에 쓴 내용" 이라고 입력해준다. 이후, add & commit 을 한다.


git log 를 통해 commit 내역을 확인할 수 있다. 쉬운 부분은 이미지 없이 이해하도록 하자.

  • git remote (-v): 내 로컬 repository 와 상호작용하고 있는 (또는 할 수 있는) 원격 저장소들의 목록을 조회한다. (-v 옵션: 단축이름과 url 같이 보기)

  • git remote add <단축이름> <url>: 기존 워킹 디렉토리에 새 원격저장소를 추가한다.
    ex) git remote add origin <url>
    내 컴퓨터의 repository 와 상호작용할 <url> 에 있는 원격 저장소를 origin 이라는 이름으로 추가한다. 원격 저장소의 url 을 origin 이라는 단축이름으로 부를 수 있다.

github 에서 practice1, practice2 repository 를 만들어준 후, remote add 를 통해 둘다 상호작용할 수 있는 상태로 만들어준다.

처음 git remote 를 하면 아직 상호작용하는 원격 저장소가 없기 때문에 아무것도 나타나지 않는다.

  • git remote rm <제거할 원격저장소 단축이름>: 해당 원격저장소를 삭제한다.

    삭제한 후 다시 추가하도록 하자.

  • git push -u <원격저장소 단축이름> <push할 브랜치명>: 원격 저장소에 해당 브랜치를 push 한다.
    (-u 옵션: 해당 브랜치와 원격 저장소의 상호작용을 default 로 지정함)

    주의할 점
    예를 들어 git push -u origin master 를 해주면 master 브랜치에 있을 때에만 git push 명령어를 통해 default 인 master -> origin 으로 push 할 수 있다. 만약 현재 다른 브랜치에 있는 상태에서 해당 브랜치로 push 하려면 git push origin <push할 브랜치명> 처럼 완전한 명령어를 사용해서 push 해야 한다.


따라서 그냥 push 를 해도 master 브랜치가 practice1 원격 저장소에 push 되는 것을 볼 수 있다.

  • git pull <원격저장소 단축이름> <동기화할 브랜치명>: 원격 저장소를 해당 브랜치에 동기화한다.

remote2 폴더를 만들고 remote-practice2 원격 저장소를 origin 이라는 단축이름으로 등록시켜주자.

github 의 remote-practice2 레퍼지토리에는 아래와 같은 test.txt 파일이 들어있다. (커밋내역으로 대신 설명한다.)

git pull 명령어를 통해 origin 원격저장소의 main 브랜치를 내 컴퓨터 레퍼지토리의 main 브랜치에 동기화 시킨다.

정상적으로 아무것도 없던 remote2 폴더가 origin 원격 저장소와 잘 동기화 된 것을 볼 수 있다.

원래 master 브랜치를 pull 하려했는데 오류가 났었다. 알아보니 github 의 기본 생성 브랜치 이름(main)이 입력한 브랜치 이름(master)과 달라서 발생한 것이었다.

따라서 github 사이트에서 브랜치명을 master으로 수정해준 후, 다시 git pull origin master 로 master 브랜치에 origin 을 동기화 한 후, 기존의 main 브랜치는 삭제하였다.

  • git branch -d <삭제할 브랜치명>: 해당 브랜치를 삭제한다.

참고: Over.grow.tistory

github 의 레퍼지토리의 내용을 바꾸면 local 레퍼지토리와 내용이 다르게 된다. 그렇다면 다시 git pull 을 해주면 된다.

정상적으로 remote2 폴더가 재동기화 된 것을 볼 수 있다.

  • git fetch <원격저장소 단축이름>: 해당 원격저장소를 내 컴퓨터 레퍼지토리와 동기화하지는 않고 가져와서 내용만 확인한다. 이때 기존에 속한 브랜치가 아닌 다른 브랜치에서 확인할 수 있다.

github 에서 내용을 추가한다.

git fetch 명령어를 사용한다. 이때 동그라미가 있는 부분의 브랜치에서 내용을 확인할 수 있다.

해당 브랜치로 이동한 후, test.txt 파일의 변경사항을 확인할 수 있다.

FETCH_HEAD 브랜치에서도 내용을 확인할 수 있다.

다시 master 브랜치로 돌아오면 변경되지 않은 기존의 test.txt 파일이 존재하는 것을 볼 수 있다.

  • git clone <원격저장소의 url>: 해당 원격저장소를 현재 위치로 복사한다.

clone 폴더를 새로 만들어주고, 해당 폴더에서 git clone 명령어를 실행한다.

정상적으로 원격저장소의 내용이 복사된 것을 볼 수 있다.


원격저장소를 복사해오면 자동적으로 그 저장소 안에서는 origin 이라고 하는 remote 가 자동적으로 등록된다.

profile
better than yesterday

0개의 댓글