🍄‍🟫양송이 Git 스프

Push&Pull 원격 저장소!

곰젤리마스터 2026. 3. 30. 09:34
git clone

 

내 컴퓨터 내에서 git 서버로 저장하는 법에 대해 알아보자

깃에 똑같은 구조의 clone을 만들어 저장할 수 있다!

다른 사람들과 함께 작업 가능 !

 

git clone

 

git 원격 브랜치

 

o/ 란?

서버(원격 저장소)의 상태를 내 로컬에 잠시 '백업'해 둔 것

 

git fetch

 

원격 저장소에서 데이터 가져오기

git fetch

 

  • 원격 저장소에는 있지만 로컬엔 없는 커밋 다운
  • 원격 브랜치가 가리키는 곳 업데이트
  • 하지만 로컬 상태는 변화시키지 않음

 

이걸 하는 방법은 여러가지!

git cherry-pick o/main;
git rebase o/main;
git merge o/main;

 

등등...

원격 저장소의 변경을 fetch하고 merge하는 과정이 워낙 빈번해서 이 두 가지 작업을 합친

git pull

 

을 만들었다고 합니다 !!!

 

 

 

협동 가장하기

 

실습을 위해 이 사이트는 git fakeTeamwork라는 명령어를 만들었다고 함 !

git clone;
git fakeTeamwork 2;
git commit;
git pull;

 

 

 

 

git push

 

 

git commit;
git commit;
git push;

 

 

엇갈린 작업

 

pull 과 push로 생기는 어려움

=> 히스토리가 엇갈릴 때 찾아옴 !!

 

<예시 상황>
난 월요일에 저장소를 clone해서 부가 기능 만들기 시작함
쭉 혼자 만들다가 금요일 쯤에 기능을 공개하려고 했음 !!
그런데 쌰~~~~갈 
동료들이 주중에 코딩을 해버려서 이미 내 작업은 프로젝트에 무용지물이 되어버림
그니까 같은 걸 작업한 게 2개가 되어버린 것임

즉 히스토리가 엇갈림

 

 

보다시피 커밋의 기반이 된 곳이 다르면 push로 업데이트가 안됨

 

 

따라서 로컬 작업을 원격에 맞춰서 최신상태로 맞춰줘야함

그 작업이 fetch임

 

git merge 로 대신해도 된다구 합니다 !

원리는 merge가 merge 커밋을 생성하고, git에게 원격 저장소의 변경을 합쳤다고 알려주기 때문이라네유

 

git fetch;
git merge o/main;
git push;​

 

fetch로 C2작업 불러오고 merge랑 o/main이랑 합친 뒤에 

push해서 clone작업에 동기화

 

 

 

git pull은 fetch와 merge의 기능을 합친 명령어였슨!!

 

또 이런 기능들을 합친 명령어는,

git pull --rebase​

 

fetch와 리베이스를 하는 작업의 줄임말

요렇게 됨 !

 

 

 

하지만 일반 pull과 사용했을 때는

 

git fetch;
git merge o/main;
git push;​

이것과  동일한 결과가 나타나게 되겟져

 

 

일단 연습문제 풀어볼게요

 

git clone;
git fakeTeamwork;
git commit;
git pull --rebase;
git push;

 

 

자 이제 이번 차시의 마지막 단계!!

원격 저장소 거부! (Remote Rejected!)

 

규모가 큰 개발팀에서 일하는 경우, 보통 원격저장소의 main 브랜치는 잠겨있음

그래서 변경 사항을 적용하려면 pull request 과정을 거쳐야함 !!

 

만약 로컬저장소의 main브랜치에서 커밋하고 push하려고 한다면 다음과 같은 오류발생할 것임....

! [remote rejected] main -> main (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)

 

 

왜일까? 이유는 다음과 같음 !!

  • 원격 저장소는 자신의 main 브랜치에 대한 직접적인 커밋을 제한함
    • push 대신 pull request가 쓰여야 한다는 규칙이 적용되어 있기 때문!

 

만약 브랜치를 따로 만들어 작업한 다음, 그것을 push하고 pull request를 하려는 상황에서

그걸 잊고 실수로 main 브랜치에서 직접 커밋해버린 상황 ! (이러면 변경사항을 push하지도 못하는 상황이 되어버림)

 

=> 메인 브랜치가 최종 브랜치격인데 여기서 싹다 작업해버려서 분리시켜야하는상황임....

 

해결법 : 다른 새로운 브랜치를 만들어서 원격 저장소에 push할 것 ! 그 다음, 원격 저장소와 동기화 되게끔 main을 reset할 것 !

 

 

 

git branch -f main o/main;
git checkout -b feature C2;
git push origin feature;

 

제 코드는 네줄인데 베스트 코드는 세줄이래서 봤더니 ㅉ

안 가르쳐준 옵션 사용하기 있니?
야박한놈들 

 

명령어의 의미

1. git branch -f main o/main
직역: main 브랜치를 강제로(-f) 원격 저장소의 main(o/main) 위치로 옮겨라!
의미: "야, 내 로컬 main아! 너 아까 실수로 C2까지 앞서 나갔지? 정신 차리고 서버에 있는 깨끗한 상태(o/main)로 다시 기어 들어가!
2. git checkout -b feature C2
직역: C2 커밋 위치에서 feature라는 새 브랜치를 만들고(-b), 거기로 바로 이동해라!
의미: "나 이제 진짜 작업 시작할 거야. C2라는 내 소중한 작업물 위에 feature라는 이름표 딱 붙이고, 내 몸(포인터)도 그리로 옮길게!"
3. git push origin feature
직역: 내 로컬의 feature 브랜치 내용을 원격 저장소(origin)의 feature로 쏴라!
의미: "자, 이제 내가 feature 브랜치에서 정성껏 만든 C2 결과물을 인터넷 저장소(GitHub 등)에 냅다 집어 던질게! 받아라!"

 

 

 

 

 

흠 일단 이렇게 또

한 단계가 끝났고....

나머지 한 단계만 하면 이 커리큘럼도 끝이 나는군요

ㅎㅇㅌ

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

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