ฉันจะผลักดันสาขา Git ท้องถิ่นไปยังสาขาหลักในระยะไกลได้อย่างไร


468

ฉันมีสาขาที่เรียกว่าพัฒนาใน repo ท้องถิ่นของฉันและฉันต้องการตรวจสอบให้แน่ใจว่าเมื่อฉันผลักมันไปที่จุดเริ่มต้นมันจะถูกรวมเข้ากับต้นกำเนิด / ต้นแบบ ปัจจุบันเมื่อฉันกดมันจะถูกเพิ่มไปยังสาขาพัฒนาระยะไกล

ฉันจะทำสิ่งนี้ได้อย่างไร


มีเหตุผลบางอย่างที่คุณไม่ต้องการรวมไว้ในเครื่องoriginแล้วผลักไปที่รีโมทหรือไม่?
bhamby

ฉันคิดว่า @galador หมายถึงผสานเข้ากับท้องถิ่นmaster- แต่มันเป็นจุดที่ถูกต้อง ถ้ามันเสถียรเพียงพอสำหรับสาขาหลักของต้นกำเนิดแน่นอนว่ามันคงเพียงพอสำหรับสาขาหลักของคุณ!
Cascabel

1
@Jefromi ใช่โห่พิมพ์ผิด -_-
bhamby

2
@Jefromi จินตนาการว่าคุณกำลังทำอะไรบางอย่างกับเจ้านายในประเทศของคุณและคุณได้ทำคอมมิชชันที่ยังไม่พร้อมที่จะผลักดัน จากนั้นปรากฎว่าคุณมีงานเร่งด่วน คุณสร้างสาขาท้องถิ่นจากต้นแบบระยะไกลทำงานและผลักดันการเปลี่ยนแปลงของคุณกลับสู่ต้นแบบ อาจไม่ใช่วิธีที่ดีที่สุด แต่นั่นคือสิ่งที่เกิดขึ้นกับฉันและนั่นคือสิ่งที่ฉันทำ มันทำงานได้อย่างไร้ที่ติตามที่ตั้งใจไว้ ฉันควรจะทำงานในสาขาท้องถิ่นที่แยกต่างหากในตอนแรก แต่มันเจ็บปวดในการแยกสาขาตลอดเวลาและมันก็สายเกินไป
pinkeen

21
ฉันกำลังผลักดันสาขาการพัฒนาไปยังแอปทดสอบที่ไม่เปิดเผยต่อสาธารณะใน Heroku เพื่อดูว่าสิ่งต่าง ๆ ทำงานอย่างไรในสภาพแวดล้อมของ Heroku ไม่ต้องการรวมรหัสของฉันเข้าmasterด้วยกัน แต่ Heroku จะไม่เรียกใช้รหัสยกเว้นว่าจะเปิดใช้งานmasterภายในแอป นี่เป็นคำขอที่สมเหตุสมผลอย่างสมบูรณ์แบบด้วยกรณีการใช้งานที่ถูกกฎหมาย!
JacobEvelyn

คำตอบ:


813
$ git push origin develop:master

หรือโดยทั่วไป

$ git push <remote> <local branch name>:<remote branch to push into>

24
อย่าทำ "ต้นกำเนิด push git: master" ที่สามารถลบสาขาที่มีอยู่ของคุณออกจากระยะไกล
Mangirdas Skripka

48
True @ MangirdasSkripka! เพียงใช้git push origin head:masterถ้าคุณไม่ต้องการระบุชื่อของสาขาปัจจุบัน :)
464 Francesc Rosas

23
Good Idea @ FrancescRosàs แต่เป็น HEAD (ตัวพิมพ์ใหญ่)
smokku

@Mipadi ถ้าฉันได้รับอนุญาตจาก mender ฉันสามารถย้ายสิ่งนี้ได้ไหม
Neeraj Sharma

11
@NeerajSharma: ฉันไม่รู้ว่าผู้ให้อนุญาตคืออะไรหรือคุณต้องการย้ายอะไร
mipadi

194

ในขณะที่คนพูดถึงความคิดเห็นคุณอาจไม่ต้องการทำเช่นนั้น ... คำตอบจาก mipadi นั้นถูกต้องอย่างแน่นอนถ้าคุณรู้ว่าคุณกำลังทำอะไรอยู่

ฉันจะพูดว่า:

git checkout master
git pull               # to update the state to the latest remote master state
git merge develop      # to bring changes to local master from your develop branch
git push origin master # push current HEAD to remote master branch

 


23
เพิ่งพูดถึงมีความรู้สึกบางอย่างในคำขอของเขาฉันใช้กรณีนั้นในการปรับใช้ (ดัน) การพัฒนาของฉันกับ Heroku master
Fabiano Soriani

5
อีกครั้งเทคนิคนี้เป็น IMHO สำหรับผู้ใช้คอมไพล์ขั้นสูงเท่านั้น ไม่ใช่ว่ามันยากเกินไปมันแค่ต้องการให้ผู้คนเข้าใจว่าพวกเขากำลังทำอะไรและทำไมมันถึงทำงานได้ดี ทุกคนมีอิสระในการใช้คอมไพล์ตามความชอบของพวกเขา แต่ฉันคิดว่าการทำตามวิธีที่ฉันแนะนำนั้นดีกว่ามากสำหรับจุดประสงค์ทางการศึกษาโดยเฉพาะอย่างยิ่งสำหรับผู้มาใหม่ ล้าง "หัวข้อหัวข้อ" เป็นวิธีการเริ่มต้นคุณสามารถเพิ่มประสิทธิภาพเวิร์กโฟลว์ของคุณในภายหลังหากจำเป็น
Eugene Sajine

1
จริงๆแล้วมันเป็นเรื่องธรรมดาที่ต้องทำ สาขาหลักมักจะเป็นสาขาการใช้งานของคุณ หากทั้งสองทีมจงใจเบี่ยงเบนการปรับใช้ของพวกเขาแล้วคุณมีโอกาสที่จะใช้สาขาท้องถิ่นที่เชอร์รี่เลือกเพื่อดันแพทช์อัปสตรีม ตอนนี้คุณอาจยืนยันว่าการเปลี่ยนแปลงควรถูกส่งไปยังสาขาและจากนั้นก็รวมเข้ากับต้นแบบ แต่ก็ไม่แปลกที่จะทำเช่นนั้น IMO
dgatwood

+1 นี่เป็นวิธีที่มีเหตุผลที่สุดในการ "สร้าง" การวางจำหน่ายผลิตภัณฑ์
Ryan

คุณจะทำอย่างไรถ้าคุณไม่ต้องการผสานกับการพัฒนา แต่พัฒนาไปเป็นผู้เชี่ยวชาญหรือไม่?
user239558

-1

ในฐานะที่เป็นส่วนขยายของ @ Eugene ให้ตอบอีกเวอร์ชั่นหนึ่งซึ่งจะใช้ในการส่งรหัสจาก repo ในพื้นที่ไปยังต้นแบบ / พัฒนาสาขา

เปลี่ยนเป็น 'ต้นแบบ' ของสาขา:

$ git checkout master

ผสานจาก repo ในพื้นที่เป็นหลัก:

$ git merge --no-ff FEATURE/<branch_Name>

กดไปที่ต้นแบบ:

$ git push

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.