Git Push
마지막 업데이트
git push는 로컬 브랜치의 커밋을 그에 대응하는 원격(예: GitHub)에 업로드합니다. 브랜치에 upstream이 설정되면 단순한 git push만으로 충분합니다. 새 브랜치의 첫 푸시는 -u를 사용해 원격 브랜치를 만들고 추적을 설정하므로, 이후의 푸시와 풀에는 인수가 필요 없습니다.
이것들을 터미널 플레이그라운드에서 사용해 보세요 - 브라우저 속 진짜 셸이며 설치할 것이 없습니다.
문법
| Command | What it does |
|---|---|
git push | 현재 브랜치를 upstream으로 푸시 |
git push -u origin feature | 새 브랜치를 푸시하고 upstream 설정 |
git push origin main | 특정 원격과 브랜치로 푸시 |
git push --tags | 모든 로컬 태그를 푸시 |
git push --force-with-lease | rebase 후 안전하게 force push |
흔한 경우
| Goal | Command |
|---|---|
| 완전히 새로운 브랜치 푸시 | git push -u origin feature |
| upstream 설정 후 푸시 | git push |
| 단일 태그 푸시 | git push origin v1.0.0 |
| 원격 브랜치 삭제 | git push origin --delete feature |
git push 자주 묻는 질문
새 브랜치를 원격에 어떻게 푸시하나요?
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를 실행할 수 있습니다 - 설치할 것이 없습니다. Coddy의 무료 인터랙티브 Git 강좌도 원격 작업을 단계별로 다룹니다.