git push -u หมายถึงอะไร?


323

ฉันมีคอมไพล์สองเวอร์ชัน ในเวอร์ชั่น 1.6.2 นั้นgit pushไม่มี-uตัวเลือก มันจะปรากฏขึ้นในรุ่น 1.7.x

จากเอกสารที่-uเกี่ยวข้องกับตัวแปร

branch.<name>.merge

ในgit config. ตัวแปรนี้อธิบายไว้ด้านล่าง:

Defines, together with branch.<name>.remote, the upstream branch 
for the given branch. It tells git fetch/git pull which branch to merge.

สาขาต้นน้ำคืออะไร


คำตอบ:


360

"อัปสตรีม" หมายถึง repo หลักที่คนอื่น ๆ จะถูกดึงออกมาเช่น GitHub repo ของคุณ ตัวเลือก -u จะตั้งค่าต้นน้ำให้กับคุณโดยอัตโนมัติเชื่อมโยง repo ของคุณกับส่วนกลาง ด้วยวิธีนี้ในอนาคต Git "รู้" ว่าคุณต้องการส่งไปที่ใดและต้องการดึงออกจากที่ใดดังนั้นคุณจึงสามารถใช้git pullหรือgit pushไม่ใช้อาร์กิวเมนต์ก็ได้ บิตลงเล็กน้อยในบทความนี้จะอธิบายและแสดงให้เห็นถึงแนวคิดนี้


19
ฉันเห็นว่าบทความที่คุณเชื่อมโยงจะระบุถึงสิ่งนี้ แต่เนื่องจากเป็น gotcha ฉันคิดว่ามันคุ้มค่าที่จะชี้ให้เห็นว่าสาขาที่ถูกผลักไปด้วยgit push นั้นไม่ได้รับผลกระทบจากการกำหนดค่าสาขาต้นน้ำเว้นแต่คุณได้push.defaultตั้งค่าไว้ ถึงtracking(หรือupstreamในคอมไพล์รุ่นที่ใหม่กว่า)
Mark Longair

ฉันไม่เข้าใจว่าเพราะเหตุใด eclipse จึงให้ทั้งสองอย่าง
HaveAGuess

23
@HaveAGuess อาจเป็นเพราะเหตุผลเดียวกับที่ Eclipse มีทั้งความทุกข์และความสิ้นหวัง
twiz

9

นี่ไม่ทันสมัยแล้ว!

Push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

Since Git 2.0, Git defaults to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.

1
แต่-uตอนนี้แฟลกทำหน้าที่อะไร ยังคงแนะนำโดย GitHub เพื่อใช้ธงนี้เมื่อเราสร้าง repo ใหม่ ...
Jean Paul

8
@JeanPaul - ตัวเลือก -u ทำสิ่งต่อไปนี้: สำหรับทุกสาขาที่เป็นข้อมูลล่าสุดหรือถูกผลักสำเร็จให้เพิ่มการอ้างอิง upstream (การติดตาม) ที่ใช้โดยคำสั่ง git-pull และอาร์กิวเมนต์อื่นที่ไม่ใช้อาร์กิวเมนต์ ดังนั้นหลังจากที่กดสาขาในพื้นที่ของคุณด้วยตัวเลือก -u สาขาท้องถิ่นนี้จะเชื่อมโยงกับสาขาระยะไกลโดยอัตโนมัติและคุณสามารถใช้ git pull ได้โดยไม่มีข้อโต้แย้งใด ๆ
Peter Piper
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.