ฉันสามารถทำสิ่งต่อไปนี้ในวิธีที่ง่ายกว่าได้ไหม?
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คุณสามารถสร้างใหม่ได้โดยตรงที่:master
origin/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
หรือไม่