포스트

[GitHub 100일 챌린지] Day 32 - git push로 업로드

[GitHub 100일 챌린지] Day 32 - git push로 업로드

100일 챌린지 Day 32 - 로컬 커밋을 GitHub에 업로드합니다

배울 내용

  1. git push 기본 사용법
  2. 브랜치별 push 전략
  3. push 실전 시나리오

Topic1. git push 기본 사용법

git push = 로컬 → Remote 업로드

로컬에서 작업한 커밋을 GitHub에 올립니다.

기본 문법

1
git push <remote> <branch>

예시:

1
git push origin main

의미:

1
2
origin(GitHub)의 main 브랜치로
로컬 main 브랜치를 업로드

처음 push할 때

새 저장소 연결:

1
2
3
4
5
# 1. Remote 추가
git remote add origin https://github.com/username/repo.git

# 2. 첫 push
git push -u origin main

-u 옵션:

1
2
3
-u = --set-upstream
로컬 브랜치와 Remote 브랜치 연결
다음부터는 git push만 입력 가능

간단하게 push

upstream 설정 후:

1
2
3
4
5
# 처음: upstream 설정
git push -u origin main

# 이후: 간단하게
git push

자동으로 해석됨:

1
2
3
git push
= git push origin main
(upstream이 설정되어 있을 때)

해보기: 첫 Push 실습

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1. 새 프로젝트 만들기
mkdir test-push
cd test-push
git init

# 2. 파일 만들고 커밋
echo "# Test Push" > README.md
git add README.md
git commit -m "Initial commit"

# 3. GitHub에 저장소 만들기
# (GitHub 웹에서 test-push 저장소 생성)

# 4. Remote 추가
git remote add origin https://github.com/username/test-push.git

# 5. Push (upstream 설정)
git push -u origin main
# Username: (입력)
# Password: (토큰 입력)

# 6. 확인
# GitHub 웹사이트에서 저장소 확인!

결과: GitHub에 코드가 업로드되어 있습니다


Topic2. 브랜치별 push 전략

여러 브랜치를 관리할 때 push 방법입니다.

현재 브랜치 push

1
2
# 현재 브랜치만 push
git push origin HEAD

HEAD = 현재 브랜치:

1
2
main 브랜치에 있으면 → main push
dev 브랜치에 있으면 → dev push

특정 브랜치 push

1
2
3
4
5
6
7
8
# main 브랜치 push
git push origin main

# dev 브랜치 push
git push origin dev

# feature 브랜치 push
git push origin feature/login

모든 브랜치 push

1
2
# 모든 브랜치를 한번에
git push origin --all

주의:

1
2
모든 로컬 브랜치가 Remote로 업로드됨
실수로 만든 브랜치도 올라갈 수 있음

새 브랜치 생성하며 push

1
2
3
4
5
6
7
8
9
# 1. 로컬에 브랜치 생성
git checkout -b feature/new-feature

# 2. 작업하고 커밋
git add .
git commit -m "Add new feature"

# 3. Remote에 새 브랜치 생성하며 push
git push -u origin feature/new-feature

upstream 자동 설정:

1
2
-u 옵션으로 추적 관계 설정
다음부터는 git push만 입력

브랜치 삭제 push

1
2
# Remote의 브랜치 삭제
git push origin --delete feature/old-branch

로컬 삭제와 다름:

1
2
3
4
5
# 로컬 브랜치 삭제
git branch -d feature/old-branch

# Remote 브랜치 삭제
git push origin --delete feature/old-branch

해보기: 브랜치 push 실습

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1. 현재 상태 확인
git branch
# * main

# 2. 새 브랜치 생성
git checkout -b feature/test

# 3. 파일 수정
echo "New feature" >> feature.txt
git add feature.txt
git commit -m "Add test feature"

# 4. 브랜치 push
git push -u origin feature/test

# 5. GitHub에서 확인
# Branches 탭에 feature/test 브랜치 생김!

# 6. 다시 main으로
git checkout main
git push

# 7. 브랜치 확인
git branch -a
# * main
#   feature/test
#   remotes/origin/main
#   remotes/origin/feature/test

결과: GitHub에 여러 브랜치가 관리되고 있습니다


Topic3. push 실전 시나리오

실제 작업에서 자주 쓰는 push 패턴입니다.

시나리오 1: 일반 작업 후 push

가장 기본적인 흐름:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 파일 수정
vim index.html

# 2. 변경사항 확인
git status
git diff

# 3. 스테이징
git add index.html

# 4. 커밋
git commit -m "Update homepage design"

# 5. Push
git push

시나리오 2: 여러 커밋 한번에 push

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 첫 번째 작업
git add file1.js
git commit -m "Add login function"

# 2. 두 번째 작업
git add file2.js
git commit -m "Add logout function"

# 3. 세 번째 작업
git add file3.js
git commit -m "Add user validation"

# 4. 한번에 push
git push
# 3개 커밋이 모두 업로드됨!

효율적:

1
2
네트워크 연결 1번
3개 커밋 동시 전송

시나리오 3: Force push (주의!)

상황: 이미 push한 커밋을 수정했을 때

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 이미 push한 상태
git push

# 2. 실수 발견, 커밋 수정
git commit --amend

# 3. 일반 push는 실패
git push
# error: failed to push

# 4. Force push
git push --force
# 또는
git push -f

⚠️ 위험:

1
2
3
다른 사람이 pull 받은 커밋을 덮어씀
협업 시 절대 사용 금지!
혼자 작업할 때만 사용

안전한 대안:

1
2
# force-with-lease 사용
git push --force-with-lease

차이:

1
2
--force: 무조건 덮어씀 (위험)
--force-with-lease: 다른 사람의 변경 확인 후 덮어씀 (안전)

시나리오 4: Push 전 최신 상태 확인

1
2
3
4
5
6
7
8
# 1. Remote 최신 상태 가져오기
git fetch origin

# 2. 차이 확인
git log origin/main..HEAD

# 3. 문제없으면 push
git push

시나리오 5: Push 후 확인

1
2
3
4
5
6
7
8
9
10
11
12
# 1. Push
git push

# 2. Remote 상태 확인
git log origin/main

# 3. 브랜치 비교
git log main..origin/main
# (아무것도 안 나오면 동기화됨)

# 4. 웹에서 확인
# GitHub 웹사이트 방문하여 커밋 확인

해보기: 실전 시나리오 실습

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 시나리오: 여러 작업 후 한번에 push

# 1. 첫 번째 기능
echo "function login() {}" > login.js
git add login.js
git commit -m "Add login function"

# 2. 두 번째 기능
echo "function logout() {}" > logout.js
git add logout.js
git commit -m "Add logout function"

# 3. 세 번째 기능
echo "function validate() {}" > validate.js
git add validate.js
git commit -m "Add validation"

# 4. 로그 확인
git log --oneline -3
# abc123 Add validation
# def456 Add logout function
# ghi789 Add login function

# 5. 한번에 push
git push

# 6. 결과 확인
# GitHub에서 3개 커밋 모두 확인!

결과: 여러 커밋을 효율적으로 한번에 업로드했습니다


정리

완료 체크:

  • git push의 기본 사용법을 안다
  • 브랜치별로 push할 수 있다
  • 실전 시나리오에서 적절히 push할 수 있다

핵심 명령어:

1
2
3
4
5
6
7
git push origin main              # 기본 push
git push -u origin main           # upstream 설정하며 push
git push                          # 간단히 push (upstream 설정 후)
git push origin HEAD              # 현재 브랜치 push
git push origin --all             # 모든 브랜치 push
git push origin --delete branch   # Remote 브랜치 삭제
git push --force-with-lease       # 안전한 force push

Push 흐름:

1
2
3
Local Repository → git push → Remote Repository (GitHub)
       |                              |
    커밋 3개                        커밋 3개

다음: Day 33 - git pull로 다운로드


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.