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 되는 것을 볼 수 있다.
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 브랜치는 삭제하였다.
github 의 레퍼지토리의 내용을 바꾸면 local 레퍼지토리와 내용이 다르게 된다. 그렇다면 다시 git pull 을 해주면 된다.
정상적으로 remote2 폴더가 재동기화 된 것을 볼 수 있다.
github 에서 내용을 추가한다.
git fetch 명령어를 사용한다. 이때 동그라미가 있는 부분의 브랜치에서 내용을 확인할 수 있다.
해당 브랜치로 이동한 후, test.txt 파일의 변경사항을 확인할 수 있다.
FETCH_HEAD 브랜치에서도 내용을 확인할 수 있다.
다시 master 브랜치로 돌아오면 변경되지 않은 기존의 test.txt 파일이 존재하는 것을 볼 수 있다.
url
>: 해당 원격저장소를 현재 위치로 복사한다.clone 폴더를 새로 만들어주고, 해당 폴더에서 git clone 명령어를 실행한다.
정상적으로 원격저장소의 내용이 복사된 것을 볼 수 있다.
원격저장소를 복사해오면 자동적으로 그 저장소 안에서는 origin 이라고 하는 remote 가 자동적으로 등록된다.