คำถามติดแท็ก git-reset

ตั้งค่าส่วนหัว Git repo ปัจจุบันเป็นคอมมิตที่ระบุและเลือกที่จะรีเซ็ตดัชนีและโครงสร้างการทำงานเพื่อจับคู่

6
จะละทิ้งการผูกมัดใน Git ได้อย่างไร?
ฉันกำลังทำงานกับบางสิ่งบางอย่างและตัดสินใจว่ามันจะเมาอย่างสมบูรณ์ ... หลังจากทำบางอย่างแล้ว ดังนั้นฉันจึงลองตามลำดับต่อไปนี้: git reset --hard git rebase origin git fetch git pull git checkout ณ จุดนี้ฉันได้รับข้อความ Your branch is ahead of 'origin/master' by 2 commits. ฉันต้องการยกเลิกข้อผูกพันในพื้นที่ของฉันโดยไม่ต้องลบไดเรกทอรีในเครื่องของฉันและดาวน์โหลดทุกอย่างใหม่ ฉันจะทำให้สำเร็จได้อย่างไร
263 git  git-reset 

4
Git, วิธีการรีเซ็ต Origin / master เป็นคอมมิชชันได้อย่างไร?
ฉันรีเซ็ตเจ้านายในพื้นที่ของฉันให้กระทำโดยคำสั่งนี้: git reset --hard e3f1e37 เมื่อฉันป้อน$ git statusคำสั่งเทอร์มินัลพูดว่า: # On branch master # Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded. # (use "git pull" to update your local branch) # nothing to commit, working directory clean เนื่องจากฉันต้องการรีเซ็ต Origin / header เช่นกันฉันจึงเช็คเอาต์ Origin / master: $ …

1
ความหมายของการรีเซ็ต git คืออะไร --hard origin / master?
ฉันทำgit pullและได้รับข้อผิดพลาด: ไฟล์แผนผังการทำงานต่อไปนี้จะถูกเขียนทับโดยการรวม ... โปรดย้ายหรือลบออกก่อนที่จะทำการผสาน เพื่อแก้ไขปัญหานี้ฉันทำสิ่งต่อไปนี้: git fetch git reset --hard origin/master ตอนนี้เมื่อฉันทำgit pullมันบอกทุกอย่างที่ทันสมัย ฉันต้องการรู้ว่าจะเกิดอะไรขึ้นเมื่อฉันเรียกใช้คำสั่งเหล่านี้ ฉันรู้ว่าgit fetchดึงการเปลี่ยนแปลงจาก repo ระยะไกลโดยไม่รวมเข้ากับ repo ในพื้นที่ของฉัน ความหมายของgit reset --hard origin/masterอะไร มันทำงานยังไง?

9
วิธีการตั้งค่าคอมไพล์ - ฮาร์ดไดเรคทอรีย่อย?
UPDATE² : ด้วย Git 2.23 (สิงหาคม 2019) มีคำสั่งใหม่git restoreที่ไม่นี้ให้ดูที่คำตอบที่ได้รับการยอมรับ UPDATE : นี้จะทำงานขึ้นอย่างสังหรณ์ใจเป็นของ Git 1.8.3 ดูคำตอบของฉันเอง ลองนึกภาพกรณีการใช้งานต่อไปนี้: ฉันต้องการกำจัดการเปลี่ยนแปลงทั้งหมดในไดเรกทอรีย่อยที่เฉพาะเจาะจงของแผนผังการทำงาน Git ของฉันโดยปล่อยให้ไดเรกทอรีย่อยอื่น ๆ ไม่เสียหาย ฉันสามารถทำได้git checkout .แต่เช็คเอาต์คอมไพล์ เพิ่มไดเรกทอรีที่ไม่รวมด้วยการชำระเงินแบบเบาบาง มีgit reset --hardแต่มันจะไม่ให้ฉันทำเพื่อไดเรกทอรีย่อย: > git reset --hard . fatal: Cannot do hard reset with paths. อีกครั้ง: เหตุใด git จึงไม่สามารถทำการฮาร์ด / รีเซ็ทตามเส้นทางได้ ฉันสามารถย้อนกลับแก้ไขสถานะปัจจุบันโดยใช้git diff subdir | …

5
เลิกทำ“ git add <dir>” หรือไม่
ฉันเพิ่มไฟล์ผิดโดยใช้คำสั่ง "git add dir" ฉันยังไม่ได้เรียกใช้ "คอมมิทคอม" มีวิธีลบ dir นี้และทุกอย่างที่มีอยู่ภายในจากการกระทำหรือไม่ ฉันลองgit reset dirแล้ว แต่มันไม่ทำงาน เห็นได้ชัดว่าgit reset fileเป็นวิธีการยกเลิก แต่ฉันมีไฟล์จำนวนมากและมีเวลาน้อยมาก
186 git  git-reset 

7
ฉันจะย้าย HEAD กลับไปยังตำแหน่งก่อนหน้าได้อย่างไร (หัวเดี่ยว) & เลิกทำ
ใน Git ฉันพยายามทำsquash commitโดยรวมสาขาอื่นแล้วรีเซ็ตHEADเป็นสถานที่ก่อนหน้าผ่าน: git reset origin/master แต่ฉันต้องก้าวออกจากนี้ ฉันจะย้าย HEAD กลับไปยังตำแหน่งก่อนหน้าได้อย่างไร ฉันมี SHA-1 fragment ( 23b6772) ของการกระทำที่ฉันต้องการย้ายไป ฉันจะกลับไปที่การกระทำนี้ได้อย่างไร?

3
“ git rm --cached x” เทียบกับ“ git reset head - x”?
GitRef.org - พื้นฐาน : git rmจะลบรายการออกจากพื้นที่จัดเตรียม สิ่งนี้แตกต่างจากgit reset HEADไฟล์ "unstages" เล็กน้อย โดย "unstage" ฉันหมายถึงมันเปลี่ยนพื้นที่การแสดงละครกลับเป็นสิ่งที่อยู่ที่นั่นก่อนที่เราจะเริ่มแก้ไขสิ่งต่างๆ git rmในทางกลับกันเพียงแค่เตะไฟล์ออกจากสเตจทั้งหมดเพื่อที่จะไม่รวมอยู่ในสแน็ปช็อตการส่งครั้งต่อไปดังนั้นจึงเป็นการลบอย่างมีประสิทธิภาพ โดยค่าเริ่มต้น a git rm fileจะลบไฟล์ออกจากพื้นที่จัดเตรียมทั้งหมดและปิดดิสก์ของคุณ&gt; (ไดเรกทอรีทำงาน) git rm --cachedที่จะออกจากแฟ้มในไดเรกทอรีการทำงานที่คุณสามารถใช้ แต่อะไรคือความแตกต่างระหว่างgit rm --cached asdและgit reset head -- asd?


11
ยกเลิกการรีเซ็ตคอมไพล์ - ฮาร์ดด้วยไฟล์ที่ไม่ได้กำหนดไว้ในพื้นที่การจัดเตรียม
ฉันกำลังพยายามกู้คืนงานของฉัน ฉันโง่ได้git reset --hardแต่ก่อนที่ผมเคยทำเท่านั้นและไม่ได้ทำget add . git commitกรุณาช่วย! นี่คือบันทึกของฉัน: MacBookPro:api user$ git status # On branch master # Changes to be committed: # (use "git reset HEAD &lt;file&gt;..." to unstage) # modified: .gitignore ... MacBookPro:api user$ git reset --hard HEAD is now at ff546fa added new strucuture for api เป็นไปได้ไหมที่จะเลิกทำgit …

4
Git: จะใช้ซ้ำ / เก็บข้อความคอมมิตหลังจาก 'git reset' ได้อย่างไร?
ในฐานะที่เป็นผู้ใช้ Git ฉันมักจะเจอสถานการณ์นี้ฉันจึงจำเป็นต้องทำการคอมมิตใหม่อย่างน้อยหนึ่งครั้งในลักษณะที่ไม่เข้ากับ--amendหรือrebase -iกับการแก้ไข โดยปกติฉันจะทำอะไรบางอย่างเช่น git reset HEAD~1 # hack, fix, hack git commit -a # argh .. do I need to retype my message? ฉันใช้ข้อความคอมมิตที่มีเหตุผลค่อนข้างจริงจัง โดยทั่วไปจะมีข้อความขนาดใหญ่พร้อมการอ้างอิงและเหตุผลสำหรับการเปลี่ยนแปลง จนถึงขณะนี้ผมรำคาญมากในกระบวนการที่มีความยาวในการกู้คืนกระทำข้อความเก่าของฉันผ่านไม่ได้เรียงลำดับgit reflog, git logและคัดลอกและวางกระบวนการ มีวิธีที่ดีกว่าในการจัดการกับสิ่งนี้หรือไม่? และจะเป็นอย่างไรถ้าฉันประกอบด้วยมากกว่าหนึ่งการกระทำ? แก้ไข:หลังจากคิดเกี่ยวกับสิ่งนี้เล็กน้อยฉันคิดว่าสิ่งที่ฉันกำลังมองหาคือฟังก์ชันการทำงานที่เหมือนgit stash -like สำหรับส่งข้อความที่แก้ไข / แก้ไขคอมมิชชันไม่เหมาะสม

3
ฉันต้องการป๊อปอัปและทิ้งคอมมิต "กลาง" ในสาขาหลักของฉัน ฉันจะทำมันได้อย่างไร?
ตัวอย่างเช่นในสาขาหลักต่อไปนี้ฉันต้องทิ้งเฉพาะการกระทำ af5c7bf16e6f04321f966b4231371b21475bc4da ซึ่งเป็นครั้งที่สองเนื่องจาก rebase ก่อนหน้านี้: commit 60b413512e616997c8b929012cf9ca56bf5c9113 Author: Luca G. Soave &lt;luca.soave@gmail.com&gt; Date: Tue Apr 12 23:50:15 2011 +0200 add generic config/initializers/omniauth.example.rb commit af5c7bf16e6f04321f966b4231371b21475bc4da Author: Luca G. Soave &lt;luca.soave@gmail.com&gt; Date: Fri Apr 22 00:15:50 2011 +0200 show github user info if logged commit e6523efada4d75084e81971c4dc2aec621d45530 Author: Luca G. Soave &lt;luca.soave@gmail.com&gt; Date: …

3
ฉันจะกู้คืน / ซิงโครไนซ์ใหม่ได้อย่างไรหลังจากที่มีคนดัน rebase หรือรีเซ็ตไปยังสาขาที่เผยแพร่แล้ว
เราได้ยินว่าหนึ่งไม่ควรตีพิมพ์ rebase ทำงานว่ามันเป็นอันตราย ฯลฯ แต่ฉันไม่ได้เห็นสูตรใด ๆ ที่โพสต์สำหรับวิธีการจัดการกับสถานการณ์ที่เกิดขึ้นในกรณีที่ rebase ถูกตีพิมพ์ ตอนนี้โปรดทราบว่าสิ่งนี้เป็นไปได้จริง ๆ หากที่เก็บนั้นถูกโคลนโดยกลุ่มคนที่รู้จัก (และควรมีขนาดเล็ก) เท่านั้นดังนั้นใครก็ตามที่ผลักดันการปรับฐานหรือรีเซ็ตสามารถแจ้งให้ทุกคนทราบว่าพวกเขาจะต้องให้ความสนใจในครั้งต่อไป ดึง (!) วิธีแก้ปัญหาที่ชัดเจนวิธีหนึ่งที่ฉันได้เห็นจะใช้ได้ผลหากคุณไม่มีข้อผูกมัดในท้องถิ่นfooและได้รับการปรับใหม่: git fetch git checkout foo git reset --hard origin/foo สิ่งนี้จะทิ้งสถานะท้องถิ่นที่fooสนับสนุนประวัติศาสตร์ของมันตามที่เก็บระยะไกล แต่จะจัดการกับสถานการณ์ได้อย่างไรหากมีการเปลี่ยนแปลงในท้องถิ่นอย่างมากในสาขานั้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.