본문 바로가기

개발

[Git] Tracking connection (-set-upstream 명령)

이번에 다룰 내용은 Tracking connection 입니다!

'Git에 이런 게 있었나?' 라는 생각과 함께 생소하게 느껴질 수도 있는데요.

밑의 이야기를 보며 배워볼게요.

 

A와 B는 얼굴을 나누어 맡았었죠?

 

그래서 둘은 이런 고민을 했습니다.

 

"혹시나 내 붓이 미끄러져서 네가 그린 부분을 망치면 어떡해?"

 

그리고 이 문제를 해결 하기 위해서 둘 만의 브랜치를 나눠 만들기로 했어요.

 

눈을 그리는 A는 upper_face 브랜치에서,

코와 입을 그리는 B는 lower_face 브랜치에서 작업하기로요.

 

 

 

 

먼저, 이 둘은 초석이 될 face 브랜치를 생성했었죠?

 

(face) $ git push -u origin face

 

🙋 : 여기서 -u 옵션은 무엇을 의미하나요?

더보기

A. -u-set-upstream 을 줄인 옵션입니다.
이 옵션을 주면 로컬 저장소의 face 브랜치가 원격 저장소의 origin/face 브랜치를 추적합니다.
이후에는 $ git push, $ git pull 만 적어도 자동으로 origin/face 브랜치를 대상으로 작동해요.

 

 

그리고 —track 혹은 -t 이라는 옵션을 주어 lower_face / upper_face 브랜치를 생성했습니다.

 

(master) $ git switch -c lower_face --track origin/face
(master) $ git switch -c upper_face -t origin/face

 

 

해당 옵션은 무엇을 의미할까요?

 

말 그대로 뒤에 나오는 원격 저장소를 추적한다는 의미입니다.

이후 로컬 저장소의 브랜치는 원격 저장소의 브랜치에 따라 움직이게 됩니다. 즉 로컬 저장소에서 마음대로 움직일수 없고, pull 이나 fetch 등으로 움직이게 됩니다.

 

그런데, 자세히 보면 lower_face / upper_face 브랜치의 push 명령이 다른데요!

 

 

(lower_face) $ git push lower_face
(upper_face) $ git push upper_face:face

 

 

둘의 차이는 무엇이고, 왜 필요한 걸까요?

tracking connection이 설정되면 $ git push 만 하면 된다면서요...? 🤷

 

 

그 이유는 로컬 저장소의 트래킹 브랜치와 원격 저장소의 브랜치 이름이 서로 다르기 때문입니다. 그냥... git 이 싫어해요! 😶

 

 

 

둘의 차이는 다음과 같습니다!

lower_face 명령의 경우는 원격 저장소에 lower_face 브랜치를 새롭게 만들어 push 를 하구요.

upper_face 명령은 새로운 브랜치를 생성하지 않고, 원격 저장소의 face 브랜치에 push 를 합니다.

 

 

🙋‍♂️ : PUSH 가 안돼요!!!!! 😡

더보기

A. $ git pull 한 번 받아주시면 됩니다 😅

 

 

 

이렇게 멋진 플로우 전략으로 사자들은 모나리자를 그리고
초원으로 돌아갔다는 그런 행복한 이야기 입니다.

🌳🌳🦁🪨🪨🦁🦁🦁🌳

 

 

 

 

 

 

 

 

 

tracking에 대해서 더 궁금하다면 🌐

 

'개발' 카테고리의 다른 글

[Java] Queue에서 poll()과 remove() 중 무엇을 선택해야 할까?  (0) 2022.01.23
코드 실행시간 측정하기 (Java, Python, C, C++)  (0) 2022.01.10
[Git] Branch  (0) 2021.11.03
[Git] Pull request  (0) 2021.11.02
[Git] Fork 명령어  (0) 2021.11.01