Menu
CoddyTech

Git Push

마지막 업데이트

git push는 로컬 브랜치의 커밋을 그에 대응하는 원격(예: GitHub)에 업로드합니다. 브랜치에 upstream이 설정되면 단순한 git push만으로 충분합니다. 새 브랜치의 첫 푸시는 -u를 사용해 원격 브랜치를 만들고 추적을 설정하므로, 이후의 푸시와 풀에는 인수가 필요 없습니다.

이것들을 터미널 플레이그라운드에서 사용해 보세요 - 브라우저 속 진짜 셸이며 설치할 것이 없습니다.

git push는 새 로컬 커밋을 원격 브랜치로 올립니다.

문법

CommandWhat it does
git push현재 브랜치를 upstream으로 푸시
git push -u origin feature새 브랜치를 푸시하고 upstream 설정
git push origin main특정 원격과 브랜치로 푸시
git push --tags모든 로컬 태그를 푸시
git push --force-with-leaserebase 후 안전하게 force push

흔한 경우

GoalCommand
완전히 새로운 브랜치 푸시git push -u origin feature
upstream 설정 후 푸시git push
단일 태그 푸시git push origin v1.0.0
원격 브랜치 삭제git push origin --delete feature

실전 예제

단계명령어결과
1git remote add origin <url>로컬 저장소를 origin이라는 이름으로 원격 저장소에 연결합니다
2git push -u origin main원격에 main을 만들고, 로컬 main의 upstream으로 설정합니다
3git push이후 main에서 하는 푸시에는 인수가 필요 없습니다

git push 자주 묻는 질문

git push는 무엇을 하나요?
로컬 브랜치에는 있고 원격 브랜치에는 없는 커밋을 보낸 뒤, 원격 브랜치를 그에 맞게 옮깁니다. 올라가는 것은 커밋뿐입니다. 커밋하지 않은 변경 사항은 내 컴퓨터에 남으므로 먼저 커밋하세요. 원격에 내가 갖고 있지 않은 커밋이 있으면, pull이나 rebase를 하기 전까지 푸시가 거부됩니다.
새 브랜치를 원격에 어떻게 푸시하나요?
git push -u origin <branch>를 실행하세요. -u(--set-upstream의 약자)는 원격에 브랜치를 만들고 로컬 브랜치를 그것에 연결하므로, 이후에는 인수 없이 git push와 git pull이 동작합니다. 원격 브랜치는 이 첫 푸시 전까지는 존재하지 않습니다.
git push가 왜 'no upstream branch'라고 하나요?
로컬 브랜치가 아직 원격 브랜치에 연결되지 않았기 때문입니다. git push -u origin <branch>로 푸시해 원격 브랜치를 만들고 upstream을 설정하세요. 그 후에는 git push만으로도 커밋을 어디로 보낼지 알게 됩니다.
태그는 어떻게 푸시하나요?
태그는 기본적으로 푸시되지 않습니다. 단일 태그는 git push origin <tagname>으로, 전부 한 번에는 git push --tags로 푸시하세요. 이것은 흔한 함정입니다 - 로컬에서 만든 태그는 명시적으로 푸시하기 전까지는 원격에 나타나지 않습니다.
force push를 어떻게 안전하게 하나요?
히스토리를 다시 쓴 후(rebase 또는 amend)에는 --force 대신 git push --force-with-lease를 사용하세요. 마지막 fetch 이후 다른 누구도 푸시하지 않은 경우에만 원격을 덮어써서 팀원의 작업을 보호합니다. 전체 설명은 git force push 페이지를 참고하세요.
git push -u origin main은 무슨 뜻인가요?
origin은 원격 저장소이고(git remote 참고), main은 브랜치이며, -u는 그 원격 브랜치를 로컬 main의 upstream으로 설정합니다. GitHub가 새 저장소를 만들면 보여 주는 바로 그 명령입니다. 한 번 실행하고 나면 main에서 git push와 git pull에 인수가 필요 없습니다.
git push와 git pull의 차이는 무엇인가요?
커밋을 서로 반대 방향으로 옮깁니다. git push는 로컬 커밋을 원격에 올리고, git pull은 원격의 새 커밋을 내려받아 내 브랜치에 병합합니다. non-fast-forward로 푸시가 거부되었다면 대개 먼저 pull을 해야 한다는 뜻입니다. pull이 내부에서 하는 일은 git fetch vs pull에서 확인하세요.
이것을 온라인으로 연습할 수 있나요?
네. 터미널 플레이그라운드를 열면 브라우저 속 진짜 셸에서 git push를 실행할 수 있습니다 - 설치할 것이 없습니다. Coddy의 무료 인터랙티브 Git 강좌도 원격 작업을 단계별로 다룹니다.
Coddy 프로그래밍 언어 일러스트

Coddy로 Git 배우기

시작하기