이번에 다룰 내용은 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 |