แก้ไข Git ที่ถอดออกหัวได้หรือไม่


1453

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

svn up .

git pullดูเหมือนว่าการใช้งานจะไม่ทำงาน การค้นหาแบบสุ่มบางอย่างทำให้ฉันไปยังไซต์ที่มีคนแนะนำให้ทำ

git checkout HEAD^ src/

( srcเป็นไดเรกทอรีที่มีไฟล์ที่ถูกลบ)

ตอนนี้ฉันรู้แล้วว่าฉันมีหัวที่แยกออก ฉันไม่รู้ว่ามันคืออะไร ฉันจะยกเลิกได้อย่างไร


69
git checkout masterจะพาคุณกลับไปที่สาขาหลัก หากคุณต้องการที่จะล้างออกเปลี่ยนแปลงสำเนาการทำงานใด ๆ git reset --hardที่คุณอาจจะอยากจะทำ
Abe Voelker


ถ้าคุณยังไม่ได้git checkout -- src/
ตั้งใจ

ลองนี้: การเชื่อมโยง ในระยะสั้นcreate temp branch - checkout temp branch - checkout master - delete temp branch
fidev

@AbeVoelker คุณหมายถึงอะไรในความคิดเห็นโดยworking copy changes? คุณอ้างถึงการเปลี่ยนแปลงที่คุณทำกับไฟล์หลังจากตรวจสอบการคอมมิชชันอื่น (เช่นการเปลี่ยนแปลงที่คุณทำในขณะที่อยู่ในสถานะหัวหน้าเดี่ยว)?
Minh Tran

คำตอบ:


2147

หัวหน้าที่แยกออกมาหมายความว่าคุณไม่ได้อยู่ในสาขาอีกต่อไปคุณได้ตรวจสอบการคอมมิชชันเดียวในประวัติศาสตร์

หากคุณต้องการลบการเปลี่ยนแปลงที่เกี่ยวข้องกับ HEAD เดี่ยว ๆ

คุณจะต้องชำระเงินสาขาที่คุณอยู่เช่น

git checkout master

ครั้งต่อไปที่คุณเปลี่ยนไฟล์และต้องการเรียกคืนเป็นสถานะที่อยู่ในดัชนีอย่าลบไฟล์ก่อนทำ

git checkout -- path/to/foo

นี่จะเรียกคืนไฟล์ foo กลับสู่สถานะที่อยู่ในดัชนี

หากคุณต้องการให้การเปลี่ยนแปลงของคุณเชื่อมโยงกับ HEAD เดี่ยว ๆ

  1. รันgit branch tmp- tmpนี้จะบันทึกการเปลี่ยนแปลงของคุณในสาขาใหม่ที่เรียกว่า
  2. วิ่ง git checkout master
  3. หากคุณต้องการรวมการเปลี่ยนแปลงที่คุณทำไว้masterให้เรียกใช้git merge tmpจากmasterสาขา คุณควรจะอยู่ในสาขาหลังจากทำงานmastergit checkout master

6
"นี่จะคืนค่าไฟล์ foo ให้เป็นสถานะก่อนที่คุณจะทำการเปลี่ยนแปลง" -> มันจะคืนค่ากลับสู่สถานะที่อยู่ในดัชนี - โปรดแก้ไข
Mr_and_Mrs_D

88
ทำไมข้อผิดพลาดนี้เกิดขึ้นตั้งแต่แรก? นี่เป็นหนึ่งในสิ่งที่ฉันเกลียดคอมไพล์ - พฤติกรรมแบบสุ่มตลอดเวลา ไม่เคยมีปัญหากับ Mercurial
Violet Giraffe

97
@VioletGiraffe มันไม่ใช่ข้อผิดพลาดหรือบางสิ่งบางอย่างสุ่ม - มันเป็นเพียงแค่สถานะที่เก็บของคุณไปเมื่อคุณชำระเงินกระทำก่อนหน้านี้ "หัวหน้า Detached" ทำหน้าที่เป็นคำเตือนว่าคุณอาจต้องการสร้างหรือชี้ไปที่สาขาหากคุณต้องการทำงานจากจุดนั้น แต่ถ้าคุณเพียงแค่ต้องการดูแท็กหรือการกระทำนั้นไม่มีอะไรผิดปกติกับการอยู่ในสถานะผู้นำเดี่ยว
Neil Neyman

22
อย่าทำอย่างนี้ถ้าคุณมุ่งมั่นที่จะแยกหัวดูคำตอบอื่น ๆ ถ้าเป็นเช่นนั้นคุณสามารถเช็คเอาต์คอมไพล์หัวหน้าก่อนหน้าได้ในPrevious HEAD position was 7426948...
KCD

9
@VioletGiraffe: คุณมีรูปแบบจิตของสิ่งที่เกิดขึ้นตาม Mercurial แต่คุณใช้ Git หากคุณไม่ต้องการปรับโมเดลจิตของคุณให้พอดีกับโมเดลของ Git สิ่งต่างๆจะยังคงปรากฏต่อเนื่อง มันเหมือนกับว่าคุณกำลังเดินไปข้างนอกด้วยแว่นตา VR และคุณคิดว่าคุณกำลังบินเครื่องบินอยู่ แต่คุณกำลังข้ามถนนจริงๆ คุณจะโดนรถชน
iconoclast

477

หากคุณมีการเปลี่ยนแปลงไฟล์ที่คุณไม่ต้องการสูญเสียคุณสามารถพุชไฟล์ได้ ฉันมุ่งมั่นพวกเขาในโหมดเดี่ยวและหลังจากนั้นคุณสามารถย้ายไปที่สาขาชั่วคราวเพื่อรวมในภายหลังในต้นแบบ

git commit -m "....."
git branch my-temporary-work
git checkout master
git merge my-temporary-work

สกัดจาก:

จะทำอย่างไรกับความมุ่งมั่นที่ทำในหัวเดี่ยว


27
ฉันพบว่านี่เป็นโซลูชันที่ต้องการ - โดยเฉพาะอย่างยิ่งถ้าคุณต้องการที่จะให้การเปลี่ยนแปลงที่คุณทำเมื่อคุณตรวจสอบแต่ละรุ่น
adswebwork

10
@adswebwork: ฉันเห็นด้วย คำตอบอื่น ๆ ทั้งหมดแนะนำให้ย้อนกลับไปสู่สถานะก่อนหน้าและการสูญเสียการเปลี่ยนแปลงที่ทำไว้ในเครื่องในสถานะหัวหน้าเดี่ยว
Sk8erPeter

6
ทำไมไม่git stash? นั่นเป็นสิ่งแรกที่อยู่ในใจของฉัน การสร้างสาขาใหม่จะเป็นการ overkill
thesummersign

2
คุณสามารถgit rebase my-temporary-workลบสาขาแล้วgit branch -d my-temporary-workจึงปรากฏว่าราวกับว่าคุณมุ่งมั่นที่จะสาขาที่ถูกต้องในสถานที่แรก
Zoltan

@geekay git stashฟังดูเหมือนเครื่องมือที่เหมาะสำหรับกรณีนี้ คุณช่วยเขียนคำตอบด้วยขั้นตอนที่แนะนำเพื่อให้บรรลุเป้าหมายได้หรือไม่?
Zoltan

156

วิธีการแก้ปัญหาโดยไม่ต้องสร้างสาขาชั่วคราว

วิธีออก (“ แก้ไข”) ถอดสถานะ HEAD เมื่อคุณได้เปลี่ยนแปลงบางสิ่งในโหมดนี้และเลือกที่จะบันทึกการเปลี่ยนแปลงของคุณ:

  1. กระทำการเปลี่ยนแปลงที่คุณต้องการเก็บไว้ หากคุณต้องการรับการเปลี่ยนแปลงใด ๆ ที่คุณทำในสถานะ HEAD เดี่ยวให้คอมมิท ชอบ:

    git commit -a -m "your commit message"
    
  2. ยกเลิกการเปลี่ยนแปลงที่คุณไม่ต้องการเก็บไว้ การฮาร์ดรีเซ็ตจะยกเลิกการเปลี่ยนแปลงที่ไม่ได้รับการยอมรับที่คุณทำในสถานะ HEAD เดี่ยว:

    git reset --hard
    

    (หากไม่มีสิ่งนี้ขั้นตอนที่ 3 จะล้มเหลวบ่นเกี่ยวกับไฟล์ที่ไม่มีการดัดแปลงใน HEAD ที่ถอดออก)

  3. ตรวจสอบสาขาของคุณ ออกจากสถานะ HEAD ที่แยกออกโดยการตรวจสอบสาขาที่คุณเคยทำมาก่อนเช่น:

    git checkout master
    
  4. ยึดครองความมุ่งมั่นของคุณ ตอนนี้คุณสามารถใช้เวลามากกว่าการกระทำที่คุณทำในรัฐ HEAD แฝดโดยเชอร์รี่แคะดังแสดงในคำตอบของฉันคำถามอื่น

    git reflog
    git cherry-pick <hash1> <hash2> <hash3> …
    

สิ่งที่git reset --hardฉันต้องการก็คือเพราะฉันต้องการให้ต้นน้ำเป็นแหล่งที่มาและการเปลี่ยนแปลงในท้องถิ่นควรจะถูกลบออก
Markus Zeller

คำตอบที่ดีสิ่งนี้ใช้ได้กับฉัน
MGLondon

130

หัวเดี่ยวหมายถึง:

  1. คุณไม่ได้อยู่ในสาขาอีกต่อไป
  2. คุณได้ตรวจสอบการกระทำเดียวในประวัติศาสตร์

หากคุณไม่มีการเปลี่ยนแปลง:คุณสามารถสลับไปที่ต้นแบบโดยใช้คำสั่งต่อไปนี้

  git checkout master

หากคุณมีการเปลี่ยนแปลงที่คุณต้องการเก็บ:

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

git branch  temp
git checkout master
git merge temp

2
สมบูรณ์แบบแล้วหลังจากลบสาขาชั่วคราว
Davi Menezes

64

นี่คือสิ่งที่ฉันเพิ่งทำหลังจากที่ฉันตระหนักว่าฉันอยู่บนหัวเดี่ยวและได้ทำการเปลี่ยนแปลงบางอย่างแล้ว

ฉันยอมรับการเปลี่ยนแปลง

$ git commit -m "..."
[detached HEAD 1fe56ad] ...

ฉันจำได้ว่าแฮช (1fe56ad) ของการกระทำ จากนั้นฉันเช็คเอาท์สาขาที่ฉันควรจะได้รับใน

$ git checkout master
Switched to branch 'master'

ในที่สุดฉันก็นำการเปลี่ยนแปลงของคำมั่นสัญญาไปใช้กับสาขา

$ git cherry-pick 1fe56ad
[master 0b05f1e] ...

ฉันคิดว่ามันง่ายกว่าการสร้างสาขาชั่วคราว


2
นี่ควรเป็นคำตอบ มันจะกู้คืนไฟล์ nuked ของคุณ
BlindWanderer

2
ใช่นี่เป็นสิ่งที่ง่ายที่สุดที่จะทำ - ง่ายพอที่จะจำได้โดยไม่ต้องค้นหาเว็บในครั้งต่อไปที่มันเกิดขึ้น git cherry-pick <hash>กระทำกัญชาโน้ตกลับไปยังสาขาที่คุณหมายถึงการกระทำการและ
Mason

ขอบคุณสำหรับการแก้ปัญหา สิ่งนี้ช่วยได้ ฉันขอเพิ่มเติมด้วยว่าฉันต้องทำ "ต้นแบบต้นกำเนิด push git" เพื่อให้ต้นแบบและต้นกำเนิด / ต้นแบบของฉันชี้ไปที่การกระทำเดียวกัน
turnip424

1
นี่คือคำตอบของ tanius (โพสต์เมื่อกว่าปีก่อน)
Peter Mortensen

ขอขอบคุณผู้ชื่นชอบเกมนี้ที่จะเปลี่ยนหัวปลดล่าสุด
Omega Cube

54

หากคุณทำการเปลี่ยนแปลงบางอย่างแล้วรู้ว่าคุณอยู่ในหัวที่แยกออกมีวิธีแก้ปัญหาง่ายๆคือ: stash -> checkout master -> pop stash:

git stash
git checkout master   # Fix the detached head state
git stash pop         # Or for extra safety use 'stash apply' then later 
                      #   after fixing everything do 'stash drop'

คุณจะมีการเปลี่ยนแปลงที่ไม่ได้รับการยอมรับและส่วนหัว "แนบ" ปกติเหมือนไม่มีอะไรเกิดขึ้น


2
บุ๊คมาร์คเด็กเลวคนนี้ไว้ - ช่วยกันสร้างสาขาชั่วคราว ทำงานรักษา
Tim Tyler

1
ฉันมักจะสิ้นสุดในสถานะ HEAD เดี่ยวหลังจากตรวจสอบ submodule git แล้วทำการเปลี่ยนแปลง ฉันพบว่านี่เป็นวิธีที่ดีที่สุดและง่ายที่สุดในการแก้ไขสิ่งต่าง ๆ เพื่อให้ฉันสามารถรักษาการเปลี่ยนแปลงไว้ได้
user5359531

1
สิ่งนี้ไม่ทำงานหากคุณยอมรับการเปลี่ยนแปลงในสถานะเดี่ยว
Danijel

40

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

หากคุณทำการเปลี่ยนแปลงกับไฟล์ใดไฟล์หนึ่งและคุณต้องการที่จะทิ้งไฟล์เหล่านั้นคุณสามารถใช้checkoutคำสั่งดังนี้:

git checkout myfile

การดำเนินการนี้จะยกเลิกการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดและเปลี่ยนกลับเป็นไฟล์ใด ๆ ก็ตามที่มีอยู่ในหัวของสาขาปัจจุบันของคุณ หากคุณต้องการยกเลิกการเปลี่ยนแปลงที่คุณได้ทำไปแล้วคุณอาจต้องการใช้resetคำสั่ง ตัวอย่างเช่นสิ่งนี้จะรีเซ็ตที่เก็บเป็นสถานะของการคอมมิชชันก่อนหน้าโดยยกเลิกการเปลี่ยนแปลงใด ๆ ที่ตามมา:

git reset --hard HEAD^

อย่างไรก็ตามหากคุณกำลังแชร์ที่เก็บข้อมูลกับบุคคลอื่น a git resetสามารถก่อกวน (เพราะจะลบส่วนหนึ่งของประวัติที่เก็บข้อมูล) หากคุณได้แชร์การเปลี่ยนแปลงกับบุคคลอื่นโดยทั่วไปแล้วคุณต้องการดูgit revertแทนซึ่งจะสร้าง "anticommit" - นั่นคือมันจะสร้างความมุ่งมั่นใหม่ที่ "ยกเลิก" การเปลี่ยนแปลงของคำถาม

หนังสือ Gitมีรายละเอียดเพิ่มเติม


1
ดังที่ฉันได้กล่าวไว้ในคำตอบของ @ralphtheninja git checkout path/to/fooอาจขัดแย้งกับgit checkout some-branchดังนั้นจึงเป็นการดีกว่าถ้าจะใช้git checkout -- path/to/fooเพื่อหลีกเลี่ยงความขัดแย้งเหล่านี้
Diego Lago

30

HEAD อยู่ในพอยน์เตอร์จึงส่งผลให้ชี้ไปยังการกระทำบางอย่างไม่ว่าทางตรงหรือทางอ้อม

  HEAD Attachedหมายความว่ามันติดอยู่กับสาขาบางสาขา (นั่นคือชี้ไปที่สาขา)
เดี่ยว HEAD หมายถึงว่ามันไม่ได้แนบไปกับทุกสาขาเช่นมันชี้โดยตรงบางกระทำ

ป้อนคำอธิบายรูปภาพที่นี่

ในคำอื่น ๆ :

  • ถ้ามันชี้ไปกระทำโดยตรง , หัวเป็นแฝด
  • ถ้ามันชี้ไปกระทำทางอ้อม (คือมันชี้ไปที่สาขาซึ่งในจุดที่หันไปกระทำ) หัวเป็นที่แนบมา

เพื่อให้เข้าใจสถานการณ์ได้ดียิ่งขึ้นด้วย HEAD ที่แนบ / ถอดออกมาเราจะแสดงขั้นตอนที่นำไปสู่ ​​quadruplet ของภาพด้านบน

เราเริ่มต้นด้วยพื้นที่เก็บข้อมูลที่เหมือนกัน (รูปภาพใน quadrants ทั้งหมดเหมือนกัน):

ป้อนคำอธิบายรูปภาพที่นี่


ตอนนี้เราต้องการที่จะดำเนินการgit checkout- โดยมีเป้าหมายที่แตกต่างกันในรูปภาพแต่ละภาพ (คำสั่งด้านบนของพวกเขาจะหรี่แสงลงเพื่อเน้นว่าเราจะใช้คำสั่งเหล่านั้นเท่านั้น):

ป้อนคำอธิบายรูปภาพที่นี่


นี่คือสถานการณ์หลังจากดำเนินการคำสั่งเหล่านั้น:

ป้อนคำอธิบายรูปภาพที่นี่

ที่คุณสามารถดูจุด HEAD ไปยังเป้าหมายของgit checkoutคำสั่ง - ไปยังสาขา (3 ภาพแรกของนอกลู่นอกทาง) หรือ (โดยตรง) เพื่อกระทำ (ภาพสุดท้ายของนอกลู่นอกทาง) ที่

เนื้อหาของไดเร็กตอรี่การทำงานก็เปลี่ยนแปลงเช่นกัน, เพื่อให้สอดคล้องกับการคอมมิท (สแนปช็อต) ที่เหมาะสม, เช่นเดียวกับ HEAD ที่ชี้ (โดยตรงหรือโดยอ้อม)


ดังนั้นขณะนี้เราจึงอยู่ในสถานการณ์เดียวกับที่เริ่มตอบคำถามนี้:

ป้อนคำอธิบายรูปภาพที่นี่


6
ไม่ได้อ่าน แต่ลงคะแนนให้กับภาพสวย ๆ ที่คุณทำ;)
Carlo Wood

@Carlo ขอบคุณ!
MarianD

22

เนื่องจาก "สถานะส่วนหัวที่แยกออก" ทำให้คุณอยู่ในสาขาชั่วคราวเพียงใช้git checkout -ซึ่งจะทำให้คุณอยู่ในสาขาสุดท้ายที่คุณอยู่


1
ระวังคุณจะสูญเสียความมุ่งมั่นใด ๆ ที่คุณทำเมื่อคุณอยู่ในสถานะผู้นำเดี่ยว
Ajak6

@ Ajak6 คุณไม่เสียความมุ่งมั่นเหล่านั้นจริงๆ พวกเขายังคงมีอยู่ผ่านทางgit reflogและสามารถนำไปเป็นสาขาใหม่หรือผ่านgit cherry-pickเข้าไปในสาขาที่มีอยู่ ดูคำถามนี้
tanius

7

เพื่อชี้แจงเพิ่มเติมคำตอบ @Philippe Gerber นี่คือ:

คอมไพล์เชอร์รี่เลือก

ก่อนหน้าcherry-pickนี้ a git checkout masterจำเป็นในกรณีนี้ นอกจากนี้ยังเป็นสิ่งจำเป็นเท่านั้นที่มีในcommitdetached head


6

ภาคผนวก

checkout @{-1}ถ้าสาขาที่คุณต้องการที่จะกลับมาเป็นเช็คเอาต์สุดท้ายที่คุณได้ทำคุณก็สามารถใช้ การดำเนินการนี้จะนำคุณกลับสู่การชำระเงินก่อนหน้า

นอกจากนี้คุณสามารถนามแฝงคำสั่งนี้ด้วยgit global --config alias.prevเพื่อที่คุณจะต้องพิมพ์git prevเพื่อสลับกลับไปที่เช็คเอาต์ก่อนหน้า


4

การอยู่ใน "หัวหน้าเดี่ยว" หมายความว่า HEAD อ้างถึงการกระทำที่ไม่ระบุชื่อ (ตรงข้ามกับสาขาที่ตั้งชื่อ) (cf: https://git-scm.com/docs/git-checkoutส่วนเด็มหัว )

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

git checkout @{-1}


2

เมื่อคุณอยู่ในสถานการณ์หัวหน้าเดี่ยวและสร้างไฟล์ใหม่ก่อนอื่นให้ตรวจสอบว่ามีการเพิ่มไฟล์ใหม่เหล่านี้ในดัชนีตัวอย่างเช่น:

git add .

แต่หากคุณเปลี่ยนหรือลบไฟล์ที่มีอยู่แล้วเท่านั้นคุณสามารถเพิ่ม (-a) และคอมมิชชันด้วยข้อความ (-m) ในเวลาเดียวกันผ่าน:

git commit -a -m "my adjustment message"

จากนั้นคุณสามารถสร้างสาขาใหม่ด้วยสถานะปัจจุบันของคุณด้วย:

git checkout -b new_branch_name

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



1

ฉันต้องการเก็บการเปลี่ยนแปลงของฉันดังนั้นฉันเพียงแค่แก้ไขสิ่งนี้ทำ

git add .
git commit -m "Title" -m "Description"
(so i have a commit now example: 123abc)
git checkout YOURCURRENTBRANCH
git merge 123abc
git push TOYOURCURRENTBRANCH

ที่ทำงานให้ฉัน


1

ปกติจะHEADชี้ไปที่สาขา เมื่อมันไม่ได้ชี้ไปที่สาขาแทนเมื่อมันชี้ไปที่แฮชคอมมิท69e51นั่นหมายความว่าคุณมี HEAD ที่แยกออกมา คุณจำเป็นต้องชี้ให้สองสาขาเพื่อแก้ไขปัญหา คุณสามารถแก้ไขสองสิ่งได้

  1. git checkout other_branch // เป็นไปไม่ได้เมื่อคุณต้องการรหัสในการส่ง hash
  2. สร้างสาขาใหม่และชี้แฮชการกระทำไปยังสาขาที่สร้างขึ้นใหม่

หัวจะต้องชี้ไปที่สาขาไม่ใช่แฮชการกระทำคือกฎทอง


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

1

หัวเดี่ยวหมายความว่าคุณไม่ได้ตรวจสอบสาขาของคุณอย่างถูกต้องหรือคุณเพิ่งตรวจสอบการกระทำเดียว

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

หลังจากนั้น ... เช็คเอาต์สาขาที่คุณต้องการโดยใช้คำสั่ง:

สมมติว่าคุณต้องการสาขา MyOriginalBranch:

git checkout -b someName origin / MyOriginalBranch



0
git pull origin master

ทำงานให้ฉัน มันเป็นเพียงแค่การให้ชื่อระยะไกลและสาขาอย่างชัดเจน


0

ในกรณีของฉันฉันทำงานgit statusและฉันเห็นว่าฉันมีไฟล์ที่ไม่ได้ติดตามในไดเรกทอรีการทำงานของฉัน

ฉันแค่ต้องทำความสะอาดพวกเขา (เพราะฉันไม่ต้องการพวกเขา) เพื่อเรียกใช้การรีบูตฉันต้องการที่จะแสดง


0

มันใช้งานได้สำหรับฉันมันจะกำหนดสาขาใหม่สำหรับหัวหน้าเดี่ยว:

git checkout new_branch_name แฝด_head_garbage_name


0

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

git commit -m "your commit message"
git checkout -b new_branch

หลังจากนั้นคุณอาจต้องการรวมสาขาใหม่นี้กับสาขาอื่น มีประโยชน์เสมอคือคำสั่งgit "สุนัข" :

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