[git] git push vs git push -u

Tae_Tae·2025년 8월 12일
0

이것저것

목록 보기
7/8

git push origin main 도 있고
git push -u origin main도 있는데 뭐가 다른건지 궁금해서 정리

1. git push vs git push -u

  • git push origin main: "로컬 main 브랜치의 코드를 origin이라는 원격 저장소의 main 브랜치에 일단 보내기만 해." 라는 일회성 명령

  • git push -u origin main: "로컬 main 브랜치의 코드를 originmain 브랜치에 보낸 후, 앞으로 이 둘을 공식적인 upstream으로 지정해 줘." 라는 지속적인 관계를 설정하는 명령

-u--set-upstream의 줄임말로, 로컬 브랜치가 원격 저장소의 특정 브랜치를 추적하도록 설정하는 역할

2. -u 옵션을 사용하면 얻는 2가지 장점

a. 명령어의 간소화

한 번 git push -u origin my-feature로 추적 관계를 설정하고 나면, 그 브랜치에서는 더 이상 길게 명령어를 입력할 필요가 없다.

  • 이후부터는 git push만 입력하면 된다.
  • git pull도 마찬가지입니다. 원격 저장소의 변경사항을 가져올 때도 git pull만으로 가능.

b. 명확한 브랜치 상태 확인

추적 관계가 설정되면 git status 명령어가 훨씬 더 유용한 정보를 제공합니다.

# -u를 사용하지 않았을 때의 git status
$ git status
On branch my-feature
nothing to commit, working tree clean

# -u를 사용했을 때의 git status
$ git status
On branch my-feature
Your branch is up to date with 'origin/my-feature'. # <-- 원격 브랜치와의 관계를 명확히 알려줌!
nothing to commit, working tree clean

만약 로컬에서만 커밋한 내용이 있다면, 아래와 같이 원격 브랜치와의 차이를 구체적으로 보여준다.

$ git status
On branch my-feature
Your branch is ahead of 'origin/my-feature' by 2 commits. # <-- 원격보다 2커밋 앞서 나감을 알려줌
  (use "git push" to publish your local commits)
nothing to commit, working tree clean

이 정보는 내가 원격 저장소와 얼마나 차이가 나는지, 협업 시 내 코드를 언제 푸시해야 할지 명확하게 판단하는 데 큰 도움이 된다나 뭐라나


3. 예시

  1. 새로운 기능 브랜치 생성 및 이동

    git switch -c new-login-feature
  2. 파일 수정 및 커밋

    # (열심히 코드 작업...)
    git add .
    git commit -m "feat: 새로운 로그인 UI 구현"
  3. 원격 저장소에 최초로 푸시 (바로 이때 -u 사용!)

    git push -u origin new-login-feature

    이 명령을 실행하면, 원격 저장소 originnew-login-feature 브랜치가 생성되고 로컬 브랜치와 영구적인 연결이 만들어짐

  4. 추가 작업 및 커밋

    # (추가 코드 작업...)
    git add .
    git commit -m "fix: 로그인 버튼 클릭 시 오류 수정"
  5. 이후의 푸시는 간편하게!

    # 'git push origin new-login-feature'를 입력할 필요 없음
    git push 

한줄 요약

새로운 브랜치로 이동하고 처음에 push 할 때 -u를 붙여주면 앞으로는 그냥 git push 만 하면 뒤에 origin~~ 안해도 -u 붙인 origin으로 push 됨 (귀찮음이 줄어듬)

0개의 댓글