วิธี "เริ่มต้นใหม่" ใน GitHub ได้อย่างไร


14

ฉันวางแผนที่จะเขียนใหม่ทั้งหมดของโครงการของฉันโดยใช้เฟรมเวิร์กอื่นเป็นต้นมันเป็นการดีที่จะเก็บรหัสเก่ารวมถึงประวัติสำหรับการอ้างอิง วิธีที่ดีที่สุดในการทำเช่นนี้คือเพื่อหลีกเลี่ยงความเสี่ยงความสับสนและความประหลาดใจ

ความคิดของฉันคือการสร้างสาขาใหม่แทนที่ทุกอย่างและรับพื้นฐาน "รุ่นใหม่" ที่ใช้งานอยู่ติดแท็กต้นแบบ "เก่า" ตัวสุดท้ายจากนั้นผสานสาขาเข้ากับต้นแบบ เสียงนี้สมเหตุสมผลหรือไม่


18
คำถามนี้ดูเหมือนจะเกี่ยวกับ Git ไม่ใช่ Github
user253751

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

2
สร้างที่เก็บใหม่
CodeGnome

คำตอบ:


15

ฉันโหวตให้เก็บทุกอย่างไว้ในที่เก็บเดียว

ฉันจะ:

  1. สร้างสาขาใหม่เพื่อชี้ไปที่รหัสเดิมของคุณ
  2. ลบรหัสทั้งหมดและส่งมอบให้กับต้นแบบ
  3. เริ่มเขียนใหม่ของคุณบนต้นแบบ

นี่คือวิธี:

# checkout the master branch
git checkout master

# create a new branch so you can find the old code easily
git branch oldStuff-KeepingForReference

# push the branch to github
git push origin oldStuff-KeepingForReference

# You currently have the master branch checked out
# so now cd to the project root and start your rewrite: 
cd <your project root>
rm -rf *

# Create a commit of the delete
git add --all *
git commit -m "Fresh start"

# Start your rewrite
echo "Some changes" > file.txt
git add file.txt
git commit -m "This is the first commit of the rewrite"

นอกเหนือ: คุณสามารถสร้างแท็กของรหัสเดิมได้ถ้าคุณรู้ว่าคุณจะไม่ต้องการเพิ่มการผูกมัดใด ๆ

เมื่อคุณควรสร้างที่เก็บใหม่แทนที่จะทำสิ่งนี้:

  • เมื่อ repo ปัจจุบันของคุณมีขนาดใหญ่และการโคลน repo นั้นช้า คุณอาจต้องการใช้ repo ใหม่

8

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


3

นั่นคือสิ่งที่สาขากำพร้ามีไว้สำหรับ

git branch -m master new_branch       #rename the branch
git push origin new_branch:new_branch #push the old code
git push origin :master               #delete the origin/master branch containing the old code
git checkout --orphan master          #create a new orphane branch - master. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.

echo foo > file.txt
git add file.txt
git commit -m 'init commit'
git push origin master

คุณอาจจำเป็นต้องตั้งค่าสาขาเริ่มต้นเป็นnew_branchGithubเป็นการชั่วคราวเพราะจะแสดงมาสเตอร์ตามค่าเริ่มต้น


2

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

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

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