학습 사이트의 아래 레벨에 해당되는 내용이다.
level remoteAdvanced<num>
o/main
에 커밋이 다운로드된 후 main
브랜치에 병합(merge
)된다. 병합 대상은 이 연결에서 결정이 된다.main
브랜치의 작업이 원격 main
브랜치 (로컬에서는 origin/main
으로 보임)으로 push
된다. push
의 목적지는 main
과 origin/main
의 연결에 따라 결정된다.main
)를 트래킹하는 로컬 브랜치를 만든다. clone
이 끝난 후 로컬 브랜치 하나가 주어지지만, 궁금하다면 원격 저장소에 있는 온갖 브랜치를 탐색할 수도 있다.origin/main
과 같이 자동으로 설정하여 tracking property도 함께 부여하지만, 원한다면 어떤 브랜치를 어떤 이름으로 트래킹할지 직접 설정할 수도 있다. totallyNotMain
이 remote의 main
트래킹하게 하기git checkout -b totallyNotMain origin/main
// taollyNotMain이 origin/main을 참조로 사용
totallyNotMain
을 push
하거나 pull
할 수 있다.push
: remote의 main
이 업데이트됨pull
: local의 origin/main
과 함께 업데이트됨git branch -u origin/main totallyNotMain
// totallyNotMain이 origin/main을 트래킹하게 함
// totallyNotMain이 check out 되어있으면 git branch -u origin/main도 가능
git push origin main
// 아래는 위 명령어에 대한 해석
{place}
에 main
을 놓음으로써 git이 커밋을 어디서 어디로 가져갈지 알려준 것{place}
에 참조할 위치를 알려줬으니, checkout되어있는 위치는 무시하게 된다.git push origin <source>:<destination>
// 옮기는 곳의 출처와 목적지도 마음대로 할 수 있다.
{source}:{destination}
)main
, HEAD~1
등){destination}
에 원하는 브랜치 이름을 넣으면 자동으로 만들어준다.git push origin main:newBranch
{source}
: 원격 저장소 안의 위치 / {destination}
: 로컬 저장소 안의 위치fetch
할 수 없지만, 그 밖의 경우라면 이 명령어를 통해 직접 로컬 브랜치에 fetch
할 수 있다. (fetch
는 기본적으로 병합 없이 다운로드만 한다){destination}
에 원하는 브랜치 이름을 넣으면 자동으로 만들어준다.git fetch
에 아무런 arguments가 없는 경우, 원격 저장소의 모든 커밋을 원격 브랜치에 다운로드한다.{source}
파라미터를 두 가지 방법으로 요상하게 사용할 수 있다.git push origin :side
side
브랜치를 삭제한다.git fetch origin :bugFix
bugFix
브랜치를 생성한다.git pull
은 결국 git fetch
와 git merge
가 합쳐진 것이기에, 위의 arguments들과 다를 게 없다.git pull origin foo
= git fetch origin foo; git merge origin/foo
git pull origin bar:bugFix
= git fetch origin bar:bugFix;git merge bugFix
git pull
은 merge
부분에서 {destination}
부분만 참조하는 걸 알 수 있다.커밋의 시각화가 Git Branching을 이해하는 데 상당히 도움되니 재방문하여 복습하는 것도 좋을 것 같다.
실제로 Git을 통해 작업할 때 시각화를 도와주는 툴이 여러 개 있다고 하는데, 고마운 팀원으로부터 GitKraken을 추천 받았다. 무료 버전과 유료 버전은 Public 저장소만 적용 가능한지, Public과 Priviate 저장소 둘 다 적용 가능한지의 차이라고 한다.