เช่นเดียวกับคนอื่น ๆ ที่ตอบด้วย Git คุณไม่ควรสนใจรหัสที่ไม่เสร็จในสาขาส่วนตัวของคุณ อย่างไรก็ตามถ้าด้วยเหตุผลบางอย่างคุณจริงๆไม่ต้องการให้งานที่ยังไม่เสร็จของคุณไปสัมผัสกับ repo หลักคุณสามารถใช้ประโยชน์จากธรรมชาติของ Git!
มีเครื่องมือชื่อง่าย ๆgit bundle
ที่สามารถช่วยให้คุณผ่านการเปลี่ยนแปลงโดยไม่ต้องมีที่เก็บส่วนกลาง ก่อนอื่นลอกเลียนแบบ:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
ทำการเปลี่ยนแปลงและส่งไปยังสาขาชั่วคราว:
git checkout -b tmp_branch
git commit -a -m "temporary changes"
ตอนนี้พวกเขารวมการเปลี่ยนแปลง:
git bundle create ../tmp.bundle tmp_branch
ตอนนี้คุณมีไฟล์บันเดิลที่คุณสามารถส่งไปยังเครื่องใหม่ของคุณ คุณใช้ที่นั่นได้อย่างไร มาสร้างสำเนาทำงานใหม่:
cd ..
git clone https://github.com/octocat/Spoon-Knife.git working_copy_2
cd working_copy_2
เราต้องปฏิบัติต่อชุดรวมของเราเป็นรีโมตอื่นดังนั้นเราจึงสามารถดึงการเปลี่ยนแปลงจากมันได้
git remote add tmp ../tmp.bundle
git fetch tmp
เนื่องจากประเด็นทั้งหมดคือการถ่ายโอนการเปลี่ยนแปลงโดยไม่ทิ้งร่องรอยเราจะต้องสควอชพวกเขาไปยังสำเนาที่ใช้งานได้เพื่อให้สูญเสียอุณหภูมิที่กระทำ:
git merge tmp/tmp_branch --squash
และสิ่งที่เหลืออยู่คือการลบรีโมตชั่วคราว:
git remote remove tmp
VIOLA! การเปลี่ยนแปลงถูกโอนไปยังสำเนาการทำงานใหม่โดยไม่ทิ้งร่องรอยของสาขาหรือการกระทำ!
แต่จริงๆแล้ว - กระบวนการนี้ค่อนข้างยาวและยุ่งยาก นี่คือ Git ไม่ใช่ SVN - ไม่มีเหตุผลอะไรเลยที่จะไม่ผลักดันสาขาของคุณไปยัง repo ส่วนกลาง