สร้างสาขาว่างบน GitHub


133

ฉันต้องการสร้างสาขา GitHub ใหม่ชื่อrelease.

สาขานี้ต้องว่าง ! อย่างไรก็ตามมีสาขาที่มีอยู่แล้วที่มี x commits และฉันไม่ต้องการมีประวัติการกระทำ

วิธีเดียวที่ฉันพบคือการสร้างสาขาในท้องถิ่น --orphan



1
ทำไมคุณถึงต้องการทำเช่นนี้? คุณสามารถเรียกชุดว่างว่า "Fred" แต่ยังคงเป็นชุดว่าง
msw

หากคุณบอกเราเพิ่มเติมเกี่ยวกับสาเหตุที่คุณต้องการทำสิ่งนี้อาจช่วยให้เราได้รับคำตอบที่ดี
willoller

ทุกสิ่งที่คุณจะทำกับคอมไพล์จะเป็นท้องถิ่นจนกว่าคุณจะผลักดันมันต้นน้ำไปยังเซิร์ฟเวอร์ GitHub git push origin _branch_กับ
โจ

คำตอบ:


278

--orphanตัวเลือกมีอะไรผิดปกติ หากคุณต้องการสาขาที่ว่างเปล่าและไม่มีประวัตินี่คือวิธีที่จะไป ...

git checkout --orphan empty-branch

จากนั้นคุณสามารถลบไฟล์ทั้งหมดที่คุณมีในพื้นที่จัดเตรียม (เพื่อไม่ให้เกิดข้อผูกมัด):

git rm -rf .

ณ จุดนี้คุณมีสาขาว่างบนเครื่องของคุณ

ก่อนที่คุณจะสามารถพุชไปยัง GitHub (หรือที่เก็บ Git อื่น ๆ ) คุณจะต้องมีอย่างน้อยหนึ่งคอมมิตแม้ว่าจะไม่มีเนื้อหาใด ๆ ก็ตาม (เช่นคอมมิตว่าง) เนื่องจากคุณไม่สามารถพุชสาขาว่างได้

git commit --allow-empty -m "root commit"

สุดท้ายดันไปที่รีโมทแล้วเปิดเบียร์

git push origin empty-branch

3
สวัสดีหลังจากสร้างที่เก็บ github สาขาว่างไม่ได้แสดงความแตกต่างของไฟล์ใด ๆ เมื่อฉันพยายามสร้างคำขอดึงจากสาขาอื่น คุณช่วยบอกวิธีแก้ปัญหานี้ได้ไหม
Raghavendra S

@RaghavendraS ดูคำตอบของฉัน ฉันมีปัญหาเดียวกัน
Greg M. Krsak

2
บางทีบางคนอาจมีปัญหากับคำตอบที่ได้รับการยอมรับนี้เนื่องจากไม่มีgit add .ขั้นตอนหลังจากที่คุณลบไฟล์ทั้งหมดและก่อนที่คุณจะกระทำ?
SCoyle

ฉันชอบเบียร์
El Ronnoco

13

--orphan เป็นสิ่งที่ดีสำหรับการสร้างสาขาว่างในพื้นที่อย่างไรก็ตามในการที่จะผลักดันหรือโต้ตอบกับสาขาอื่นคุณจะต้องมีการคอมมิต

การสร้างคอมมิตใหม่ในสาขาเด็กกำพร้าไม่ใช่ความคิดที่ดีเพราะคุณจะไม่สามารถโต้ตอบกับสาขาอื่นได้ ได้แก่

git checkout --orphan test
git commit --allow-empty -m "init test branch"
git merge master
fatal: refusing to merge unrelated histories

คุณควรสร้างสาขาใหม่จากการกระทำครั้งแรกของ master แทน หากคอมมิตไม่ว่างคุณสามารถเพิ่มคอมมิตว่างก่อนอันแรกตามที่ @houtanb อธิบาย


5

คุณยังสามารถทำตามคำแนะนำที่นี่เพื่อสร้างคอมมิตว่างที่รากของmasterสาขาของคุณ จากนั้นสร้างreleaseสาขาของคุณโดยที่รูทคอมมิตว่างนั้นอยู่


3

คำตอบที่ได้รับการยอมรับทำให้ฉันประสบปัญหาดังนั้นฉันจึงทำสิ่งนี้:

$ git branch
* staging
$ git branch master c74d99cf46f6ed23e742f2617e9908294b4a608b
$ git checkout master
Switched to branch 'master'

และได้รับสิ่งที่ฉันต้องการโดยไม่ต้องรวม / ดึงปัญหา ฉันต้องเลือกฐานคอมมิตเพื่อสร้างสาขาที่สองของฉันจาก


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