[GitHub 100일 챌린지] Day 32 - git push로 업로드
[GitHub 100일 챌린지] Day 32 - git push로 업로드
100일 챌린지 Day 32 - 로컬 커밋을 GitHub에 업로드합니다
배울 내용
- git push 기본 사용법
- 브랜치별 push 전략
- 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 라이센스를 따릅니다.
