🍄‍🟫양송이 Git 스프

고급 Git 원격 저장소

곰젤리마스터 2026. 3. 31. 14:31

안녕하세요...

마지막 단계를 깨러 왔답니다?

 

feature 브랜치 병합하기

 

 개발자들은 주로 큰 프로젝트를 개발할 때 작업을 feature 브랜치에 하고

준비가 되면 그 작업들을 통합시킨다고 하네여

 

 또 메인 브랜치에 있을 때만 push와 pull을 수행할 수 있다구 합니다.

=> 이렇게 하면 main은 항상 원격 브랜치의 상태와 항상 최신의 상태로 유지될 수 있다!!!

 

 

그래서 작업흐름은 두 가지로

  • feature 브랜치의 작업을 main브랜치로 통합
  • 원격 저장소에서 push하고 pull하는 작업

 

 

할게 많습니다 ! 행운을 빕니다 :> 

ㄴ 그러세요 그럼 ㅉ

 

 

git fetch
git rebase o/main side 1
git rebase side1 side2
git rebase side2 side3
git rebase side3 main
git push

 

 

 

원격작업과 merge하기

 

 새로운 작업들을 원격 저장소로 push하기 위해 원격 저장소의 최근 변경들을 합치기만 하면 됨!

=> 즉 원격 브랜치로 rebase를 할 수도 merge를 할 수도 있다는 것

 

 

rebase 장단점

장점
- 커밋 트리를 깔끔히 정리해서 가독성이 좋다
- 모든 게 한 줄에 있기 때문!

단점
- 커밋 트리의 (보이는)히스토리를 수정하게 됨
- 실제 작업이 실행됐던 순서를 정확히 알 수 없음

 

 

 수정 환경 이력 보존 => merge 

 안 그래도 되면 => rebase

 

 

점점 난해해지는 트리들

 

 

OMG 겨우겨우 완성했는데 이게 뭐죠?

 

 

git fetch;
git checkout C2;
git merge C8;
git merge C4;
git merge C7;
git branch -f main C11;
git checkout main;
git push;

 제 코드는 이건데 정답코드는 훨씬 짧네요

 

 

git checkout main;
git pull;
git merge side1;
git merge side2;
git merge side3;
git push;

 

원격 - 추적 브랜치

 

 

 

예 뭐 그렇다네요

 

자 이제 중요한 명령어 나옵니다

 

  1. git checkout -b totallyNotMain: totallyNotMain이라는 이름의 새 브랜치를 만들고 거기로 이동해!
  2. o/main: 근데 이 브랜치는 원격의 o/main을 추적(팔로우) 하게 설정해 줘!

이렇게 하면 브랜치 이름은 totallyNotMain이지만, git push를 하면 원격 저장소의 main 브랜치로 작업 내용이 쏙 들어가는 마법이 일어나. ✨

 

사실 잘 이해가 안 돼서 제미나이한테 물어보니...

저렇게 친절히 대답해주더라구요

ㅎㅅㅎ

 

 

git commit;
git pull --rebase;
git push;

 

 

Push의 인자들

 

아 근데 이제 그만하고싶다

재미가그닥없어요

 

 

장난입니다~

 

이런말하면안되겠지요?

 

자 이제 push의 인지들에 대해 배워보겠습니다

 

git push <remote> <place>

 

 

일단 place인자의 의미는 멀까?

 

git push origin main

 

해석해보면

  • 내 저장소에 있는 main 이란 이름의 브랜치로 가서 모든 커밋 수집
  • 그 다음 origin의 main 브랜치로 가서 이 브랜치에 부족한 커밋을 채워 넣고 완료 되면 알려줌

 

한 마디로 push할 위치를 지정하는 것이라고 생각하시면 됩니다!!

 

<place> 인자에 대한 세부사항들

 

소스와 destination 따로 지정하여 push하기 !!

git push origin <source>:<destination>

 

일반적으로 이것을 colon refspec이라고 부름!

 

 

 

git fetch 인자들

 

 git fetch origin <place>

 

커밋을 place 브랜치에서만 내려받고  로컬의 o/foo 브랜치에만 적용

git fetch origin <source>:<destination>

 

 

Source가 없다?!

 

 Git은 source 인자를 두 가지 방법으로 이상하게(?????) 사용함!!

이 두 가지 오용은 git push와 git fetch에 source에 없음을 지정할 수 있기 때문에 나타남

 

인자로 아무것도 안 쓰면 됨!!!

 

 

git push origin :side;
git fetch origin :bugFix;

 

그래서 결국 브랜치 삭제도

인자에 아무것도 쓰지 않는 방식으로 삭제할 수 있음 !!

 

 

git fetch origin :bar

로컬에 bar 브랜치 추가

 

git push origin :foo

가상환경의 foo 삭제

 

 

 

 

Git pull의 인자들

 

드디어 마지막.. 

ㅠㅠ

 

git pull origin foo;
git fetch origin foo; git merge o/foo;

같은 말임 !!

 

 

그리고 또

 

git pull origin bar:bugFix;
git fetch origin bar:bugFix; git merge bugFix;

이것도 같은 말임 !!!

 

 

그냥 pull은 fetch와 merge를 합친 것 !!!!

 

 

이제 진짜 끝이 났ㄴㅔ요 .

수고많았습니다.

 

 

 

이젠 또 뭘 해볼까요?

.,,

화이팅

'🍄‍🟫양송이 Git 스프' 카테고리의 다른 글

Push&Pull 원격 저장소!  (0) 2026.03.30
고급 문제  (2) 2026.03.24
종합선물세트  (0) 2026.03.24
작업을 여기저기로 옮기기  (0) 2026.03.23
다음 단계로  (0) 2026.03.23