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 |