ฉันสามารถทำสิ่งต่อไปนี้ในวิธีที่ง่ายกว่าได้ไหม?
git checkout origin/master
git branch -D master
git branch master
git checkout master
ฉันสามารถทำสิ่งต่อไปนี้ในวิธีที่ง่ายกว่าได้ไหม?
git checkout origin/master
git branch -D master
git branch master
git checkout master
คำตอบ:
ตามคำตอบของKindDragonคุณสามารถสร้างใหม่ได้โดยตรงที่:masterorigin/master
git checkout -B master origin/master
git checkoutหน้าคน กล่าวถึง:
หาก-Bได้รับ<new_branch>จะถูกสร้างขึ้นหากไม่มีอยู่จริง มิฉะนั้นจะถูกตั้งค่าใหม่ นี่คือการทำธุรกรรมที่เทียบเท่า
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
แนะนำเดิม:
สิ่งที่ต้องการ:
$ git checkout master
# remember where the master was referencing to
$ git branch previous_master
# Reset master back to origin/master
$ git reset --hard origin/master
ด้วยขั้นตอนที่ 2 เป็นตัวเลือก
Git รองรับคำสั่งนี้:
git checkout -B master origin/master
ตรวจสอบorigin/masterสาขาแล้วรีเซ็ตmasterสาขาที่นั่น
git fetch origin masterก่อนเพื่อให้แน่ใจว่าorigin/masterได้รับการอัปเดตหรือไม่
git fetchก่อน
ฉันคิดว่าคำตอบของ VonC มีความซับซ้อนเมื่อเทียบกับตัวเลือกนี้:
git update-ref refs/heads/master origin/master
git reset --hard master
git จะบันทึกทุกค่าของ ref โดยอัตโนมัติ (ผ่าน reflog) ดังนั้นหลังจากที่คุณเรียกใช้คำสั่งนั้นแล้วmaster@{1}หมายถึงค่าก่อนหน้าของต้นแบบ
คำตอบของ VonC นั้นถูกต้อง แต่มันเป็นการสิ้นเปลืองเวลาในการชำระค่าเก่าของมาสเตอร์ในระบบไฟล์
หากคุณสนใจเกี่ยวกับวัตถุกำพร้าใน repo คุณสามารถเรียกใช้ git gc
Already on 'master'
หากคุณมีอยู่แล้วmasterคุณสามารถทำสิ่งต่อไปนี้:
git reset --hard origin/master
มันจะชี้masterสาขาท้องถิ่นไปยังรีโมทorigin/masterและทิ้งการดัดแปลงใด ๆ ใน dir ที่ทำงาน
git checkout -B master origin/masterหรือไม่