ทำไมตอน git push ต้อง “-u”

Apirak
1 min readJan 16, 2022

ตอนที่เราเปิด repository ใหม่บน github มันจะบอกให้เราสั่งประมาณนี้

git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:apirak/ABC.git
git push -u origin main

บรรทัดสุดท้ายจะมี “-u” อยู่ด้วย ซึ่งปกติก็ไม่เคยใช้เลย เราจะสั่งแค่ “git push origin main” มาตลอด ซึ่งก็ใช้งานได้ดี ไม่เห็นมีปัญหาอะไร แต่วันนี้ดันรู้สึกสงสัยอยากรู้ว่าทำไม github ต้องให้เราใส่ option ที่เราไม่จำเป็นด้วย ก็เลยลองพยายามค้นดู ก็ไปเจอบน git-scm.com เค้าบอกว่า

-u
--set-upstream
For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull[1] and other commands. For more information, see branch.<name>.merge in git-config[1].

อ่านไปก็ไม่รู้เรื่องว่าแล้วจะ set-upstream ไปทำไม? เลยไปค้นต่อแล้วก็ไปเจอเรื่องนี้บน stackoverflow เค้าบอกว่า set-upstream จะทำให้เราสั่งคำสั่งต่อไปนี้ได้โดยที่ไม่ต้องใส่ argument เพราะเรา set upstream ไว้แล้ว

  • git fetch
  • git merge
  • git pull
  • git status

ซึ่งทำให้สะดวกขึ้นมากๆ เราจะได้สั่งทั้ง 4 คำสั้งนี้ได้โดยที่ไม่ต้องใส่ “origin branch”

แต่เราไม่ต้องใส่ “-u” ทุกครั้ง แค่ใส่ตอนที่เราต้องการกำหนด upstream ก็พอแล้ว ซึ่งส่วนมากก็คือครั้งแรกที่เรา push ของขึ้น repository ครับ

reference

--

--

Apirak

I am a big believer that great UX comes from all team members, not one. #UX Evangelist at ODDS #Co-founder of UX Academy #Certified Sprint Master.