ไม่สามารถ "git stash pop" เนื่องจากความขัดแย้ง


19

ฉันมีที่เก็บในระบบคอมไพล์และมีไฟล์ที่แก้ไขหลายไฟล์ จากนั้นฉันก็ต้องรีบแก้ไขสิ่งที่ฉันต้องการ

  • ขัดขวางการเปลี่ยนแปลงของฉัน (git stash)
  • ไฟล์ที่แก้ไข (ไฟล์ vi)
  • มุ่งมั่น (git กระทำ)
  • popped stash (git stash pop)

สิ่งนี้ทำให้เกิดความขัดแย้ง

# On branch master
$ git stash pop
Auto-merging page/search.php
CONFLICT (content): Merge conflict in page/search.php
$ git status
# On branch master
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      page/search.php

หากฉันพยายามล้างข้อมูลการเปลี่ยนแปลงและนำการสะสมกลับมาใช้สิ่งเดียวกันจะเกิดขึ้น (ขัดแย้งกัน) ฉันไม่สนใจหน้า / search.php มากนัก แต่ฉันต้องการลบไฟล์อื่นออกจากที่เก็บ

มีวิธีการแปลงสะสมเป็นแพทช์หรือเพียงแค่รับไฟล์ตามที่พวกเขาเมื่อถูกซ่อน?

คำตอบ:


20

ที่เก็บถูกนำไปใช้กับไฟล์อื่นแล้ว มีเพียงpage/search.phpคุณเท่านั้นที่ต้องรวมด้วยตนเอง หลังจากนั้นเพียงแค่เรียกใช้git resetเพื่อหยุดการเปลี่ยนแปลงและทำการแฮ็ค - หรือgit add ...และการกระทำ


ใช่. เผง หลังจากที่ฉันกู้คืนโปรแกรมแก้ไขด้วย -p ฉันพบว่ามีการอัปเดตไฟล์อื่นแล้ว
romaninsh

3
ดีมากgit stash pop, แก้ไขข้อขัดแย้งของคุณจากgit add xนั้นgit resetจึงเลิกแสดงละครขอบคุณ!
Quang

@Quang ควรมีstash pop --continueนามแฝงresetใด :)
Kaz

12

แก้ไขด้วย:

git stash show -p

นั่นช่วยวันของฉัน =)
Anatoly techtonik

ไม่-pทำอะไรที่นี่?
Joost

2
แสดง? -p สิ่งนี้ทำอะไร "การแสดง" อาจเกี่ยวข้องกับการแก้ไขข้อขัดแย้งได้อย่างไร
Arnold Roa

2
คำสั่งนี้แสดงการเปลี่ยนแปลงที่เกิดขึ้นในที่ซ่อนช่วยให้คุณสามารถผสานด้วยตนเอง
Desmond Weindorf

1
ฉันพบgit stash show -p | git apply && git stash dropจากcoderwall.com/p/anxp0g/force-a-git-stash-popและฉันพยายามตรวจสอบว่ามันจะทำงานก่อนที่ฉันจะรัน :-)
PatS

7

หลังจากgit stash popคำสั่งคุณจะต้องแก้ไขข้อขัดแย้งgit stash dropด้วยตนเองจากนั้นทำด้วยตนเองตามคำman git-stashแนะนำ

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