เหตุใดจึงไม่สามารถใช้ที่ซ่อนกับไดเร็กทอรีการทำงานได้


96

ฉันไม่สามารถใช้ที่ซ่อนกลับไปยังไดเร็กทอรีการทำงานได้

เรื่องเล็กน้อย:

ก่อนอื่นฉันพยายามผลักดันการเปลี่ยนแปลงบางอย่างที่มุ่งมั่น แต่มันบอกว่า: "ไม่คุณทำไม่ได้ดึงก่อน" ... ตกลงจากนั้นฉันจะดึงสิ่งต่างๆจาก GitHub แล้วผลักดันการเปลี่ยนแปลงของฉัน เมื่อฉันพยายามดึงมันบอกว่าฉันมีการเปลี่ยนแปลงที่จะถูกเขียนทับและฉันควรซ่อนการเปลี่ยนแปลงของฉันไว้ ตกลงฉันซ่อนการเปลี่ยนแปลง ... ดึงและผลักดันการเปลี่ยนแปลงที่มุ่งมั่น แต่ตอนนี้ฉันไม่สามารถเรียกคืนการเปลี่ยนแปลงที่ไม่ได้ผูกมัดที่ฉันกำลังดำเนินการอยู่

นี่คือข้อผิดพลาด:

MyPath/File.cs already exists, no checkout
Could not restore untracked files from stash

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

จะดีมากถ้ามีคนช่วยฉันแก้ปัญหานี้ ... ฉันค้นหา google และทุกอย่างมานานกว่าหนึ่งชั่วโมงแล้วและยังไม่ได้วิธีแก้ปัญหา

ความช่วยเหลือเป็นที่ชื่นชมมาก ขอบคุณ!

คำตอบ:


75

ดูเหมือนว่าที่เก็บของคุณจะมีไฟล์ที่ไม่ได้ติดตามซึ่งถูกเพิ่มไปยัง repo ในภายหลัง เมื่อคุณลองตรวจสอบแล้วคอมไพล์จะปฏิเสธอย่างถูกต้องเพราะจะเป็นการเขียนทับไฟล์ที่มีอยู่

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

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

  1. ย้ายไปที่อื่น
  2. ใช้ที่ซ่อน
  3. ผสานสองเวอร์ชันของไฟล์ด้วยตนเอง (โครงสร้างการทำงานเทียบกับการย้าย)

2
มีวิธีใดบ้างที่ฉันสามารถหลีกเลี่ยงการซ่อนสิ่งต่างๆในอนาคตได้ ... ฉันมาจาก SVN และมันตั้งตารอ ... คุณแค่อัปเดตแก้ไขความขัดแย้งแล้วก็ยอมรับ Git ไม่ได้ยากขนาดนั้นฉันต้องเพิ่ม 2 ขั้นตอนในวงจร ขอบคุณอีกครั้ง!
มิเกลแองเจโล

2
@ มิเกล: การซ่อนไม่ใช่อุปสรรค เป็นเครื่องมือเพิ่มเติมจาก Git ที่ช่วยให้คุณปรับปรุงขั้นตอนการทำงานและหลีกเลี่ยงความขัดแย้งและการกระทำที่ไม่สะอาด git-scm.com/docs/git-stash
Koraktor

8
แม้ว่าคำตอบจะถูกต้อง แต่ฉันไม่แน่ใจจริงๆว่าคอมไพล์ "ถูกต้อง" ในเรื่องนี้ ไฟล์อยู่ใน repo ดังนั้นจึงไม่มีอันตรายจากการสูญหายของข้อมูล ทำไมไม่ใช้การเปลี่ยนแปลงนี้ล่ะ ดูกระทู้นี้ - git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html
studgeek

5
ฉันคิดว่าคำตอบนี้ไม่เป็นประโยชน์มากที่สุด git stashควรช่วยในการสำรองข้อมูลการเปลี่ยนแปลงในเครื่องอย่างรวดเร็ว การลบชุดไฟล์ด้วยตนเองเพื่อกู้คืนจะทำให้ขั้นตอนนี้แตก git stash branchแนวทางในคำตอบอื่น ๆ เสียงดี แต่ยังคงคู่มืออื่น ๆ อีกมากมายกว่าที่ต้องการ
Bentolor

คำตอบนี้ได้ผลดีที่สุดสำหรับฉันเมื่ออยู่ในสถานการณ์เดียวกัน หลังจากที่ฉันโผล่ที่ซ่อนฉันก็ผ่านการผสานอย่างที่ฉันคาดไว้ตั้งแต่แรก
Billy Lazzaro

59

วิธีที่ปลอดภัยและง่ายที่สุดน่าจะเป็นการเก็บของอีกครั้ง:

git stash -u             # This will stash everything, including unstaged files
git stash pop stash@{1}  # This will apply your original stash

หลังจากนั้นหากคุณพอใจกับผลลัพธ์คุณอาจโทรหา

git stash drop

เพื่อลบที่ซ่อน "ปลอดภัย" ของคุณ


2
ขอบคุณสำหรับสิ่งนี้ช่วยฉันจากความเจ็บปวดและความทุกข์ทรมานมากมาย!
danjarvis

9
ป๊อปซ่อนจะใช้และวางที่ซ่อนเดิมของคุณ เพียงเพื่อจะใช้งานอย่างปลอดภัยแทนapply pop
Hilbrand Bouwkamp

2
ในความpopเป็นจริงคือการรวมกันของapplyและdropแต่จะเฉพาะในdropกรณีที่applyทำงานโดยไม่มีข้อขัดแย้ง แต่ใช่applyมักจะปลอดภัยกว่า
Koraktor

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

2
วิธีนี้จะช่วยแก้ปัญหาได้ก็ต่อเมื่อปัญหาที่ขัดแย้งกันยังไม่ได้รับการแก้ไข คุณจะได้รับข้อความที่เหมือนกันทุกประการเมื่อพวกเขาได้ทำการตกลง (เช่นชำระเงินเรียบร้อย) จากนั้นสิ่งนี้จะไม่เปลี่ยนแปลงอะไรเลย ...
Jasper

57

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

วิธีที่ดีที่สุดคือการแปลงที่ซ่อนเป็นกิ่งไม้ เมื่อเป็นสาขาแล้วคุณสามารถทำงานในคอมไพล์ได้ตามปกติโดยใช้เทคนิค / เครื่องมือที่เกี่ยวข้องกับสาขาตามปกติที่คุณรู้จักและชื่นชอบ นี่เป็นเทคนิคทั่วไปที่มีประโยชน์ในการทำงานกับที่เก็บข้อมูลแม้ว่าคุณจะไม่มีข้อผิดพลาดในรายการก็ตาม ใช้งานได้ดีเนื่องจากการซ่อนเป็นการกระทำภายใต้ฝาครอบ (ดู PS)

การแปลงที่ซ่อนเป็นสาขา

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

git stash branch STASHBRANCH

การทำงานกับ "สาขาที่เก็บ"

สิ่งที่คุณจะทำต่อไปขึ้นอยู่กับความสัมพันธ์ระหว่างที่เก็บข้อมูลและตำแหน่งที่สาขาเป้าหมายของคุณ (ซึ่งฉันจะเรียกว่า ORIGINALBRANCH) อยู่ในขณะนี้

ตัวเลือกที่ 1 - Rebase stash branch ตามปกติ (มีการเปลี่ยนแปลงมากมายตั้งแต่ stash)

หากคุณได้ทำการเปลี่ยนแปลงมากมายใน ORIGINALBRANCH ของคุณคุณน่าจะปฏิบัติต่อ STASHBRANCH ได้ดีที่สุดเช่นเดียวกับสาขาในพื้นที่ ยอมรับการเปลี่ยนแปลงของคุณใน STASHBRANCH สร้างฐานข้อมูลใหม่บน ORIGINALBRANCH จากนั้นเปลี่ยนเป็น ORIGINALBRANCH และปรับฐาน / รวมการเปลี่ยนแปลง STASHBRANCH เข้าด้วยกัน หากมีข้อขัดแย้งให้จัดการตามปกติ (ข้อดีอย่างหนึ่งของแนวทางนี้คือคุณสามารถดูและแก้ไขความขัดแย้งได้)

ตัวเลือก 2 - รีเซ็ตสาขาเดิมเพื่อให้ตรงกับที่ซ่อน (การเปลี่ยนแปลงที่ จำกัด ตั้งแต่ที่ซ่อน)

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

git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset

พื้นหลัง

Stashes ยอมรับว่าชอบสาขา / แท็ก (ไม่ใช่แพทช์)

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

บางครั้งจำเป็นแม้ว่าคุณจะไม่ได้ทำการเปลี่ยนแปลงไดเร็กทอรีการทำงานก็ตาม

PPS คุณอาจต้องใช้เทคนิคนี้หลังจากใช้การซ่อนด้วย - แพทช์และ / หรือ - รวม - ไม่ถูกติดตาม แม้ว่าจะไม่มีการเปลี่ยนไดเรกทอรีการทำงานตัวเลือกเหล่านี้บางครั้งก็สามารถสร้างที่ซ่อนที่คุณไม่สามารถใช้กลับ ฉันต้องยอมรับว่าไม่เข้าใจว่าทำไม ดูhttp://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.htmlสำหรับการสนทนา


5
คำตอบนี้ควรถูกระบุว่าเป็นโซลูชันเนื่องจากเป็นคำแนะนำที่เป็นประโยชน์มากที่สุดเกี่ยวกับวิธีการแก้ไข 'ที่ซ่อนอยู่' อย่างมีประสิทธิภาพมากที่สุด อาจปรับปรุงได้โดยกล่าวถึง 'โซลูชันการลบอย่างง่าย' ก่อนและโซลูชันสาขาเป็นตัวเลือกที่สอง
Bentolor

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

+1 ฉันตกอยู่ในความยุ่งเหยิงของสปาเก็ตตี้กับการกระทำและการเปลี่ยนแปลงและการซ่อน ฯลฯ สิ่งนี้ทำให้ฉันหลุดพ้นจากมันได้โดยการนำที่ซ่อนไปยังสาขาขอบคุณ studgeek
RobbZ

ขอบคุณสำหรับคำชี้แจงเกี่ยวกับวิธีการซ่อนไม่ใช่แพทช์และวิธีการผูกติดกับ HEAD (ในขณะที่ซ่อน) ที่เข้าท่ามาก - ดังนั้น ... ฉันคิดว่ามีหลายกรณีที่มีความยืดหยุ่น / พกพา / สะดวกในการสร้างแพตช์มากกว่าที่เก็บซ่อน (ดังที่คุณกล่าวไว้: เมื่อมีการเปลี่ยนแปลงจำนวนมาก) เพื่อให้สามารถใช้งานได้ทุกที่ (และเป็น เป็นเพียงเรื่องของการแก้ไขความขัดแย้ง) บางทีอาจgit stash show -pจะช่วยสร้างที่ซ่อน -> * ปะ *
Kamafeather

39

วิธีแก้ปัญหา:คุณต้องลบไฟล์ที่เป็นปัญหาจากนั้นลองซ่อนป๊อป / ใช้อีกครั้งและควรผ่าน อย่าลบไฟล์อื่น ๆ เพียงไฟล์ที่กล่าวถึงโดยข้อผิดพลาด

ปัญหา: Git ดูดบางครั้ง เมื่อเรียกใช้งานgit stash -uจะมีไฟล์ที่ไม่ได้ติดตาม (เจ๋งมาก!) แต่มันไม่ได้ลบไฟล์ที่ไม่ถูกติดตามเหล่านั้นและไม่รู้ว่าจะใช้ไฟล์ที่ไม่ได้ติดตามที่ซ่อนอยู่ด้านบนของสิ่งที่เหลือ (ไม่เจ๋ง!) ซึ่งทำให้-uตัวเลือกนี้ค่อนข้างไร้ประโยชน์


3
ฉันจะยอมรับคำตอบนี้หากเป็นคำถามของฉัน ขอบคุณ @qwertzguy คำตอบของคุณช่วยแก้ปัญหาของฉัน
Kobus Myburgh

พบปัญหาเดียวกันกับตัวเอง git stash pop จะใช้ไม่ได้จนกว่าฉันจะลบไฟล์ที่มีปัญหา - จากนั้นฉันก็พบข้อขัดแย้งกับไฟล์ที่ทำให้ที่ซ่อนถูกปฏิเสธ แต่จากนั้นก็ลบไฟล์ที่ไม่ได้ติดตามมันทิ้งไว้เบื้องหลัง .. ดังนั้นโปรดทราบว่าตัวเองในอนาคตอยู่ห่างจากgit stash -u
notzippy

คำแนะนำที่ไม่ดีหากคุณต้องการชิ้นส่วนจากไฟล์ที่ได้รับผลกระทบทั้งสองเวอร์ชัน
Walf

2
"มันไม่ได้ลบไฟล์ที่ไม่ได้ติดตามบรรดา" ... git stash showและไม่ได้แสดงรายการไว้ใน คำตอบนี้ทำให้หลอดไฟดำเนินต่อไป
jscs

2
บวกหนึ่งสำหรับ Git มันห่วยบางครั้ง
Harish

29

หากต้องการใช้ความแตกต่างของรหัสในที่เก็บเป็นโปรแกรมแก้ไขแทนให้ใช้คำสั่งต่อไปนี้:

git stash show --patch | patch -p1

11
โดยปกติแล้วการอธิบายวิธีแก้ปัญหาจะดีกว่าแทนที่จะโพสต์โค้ดที่ไม่ระบุตัวตนบางแถว คุณสามารถอ่านวิธีทำผมเขียนคำตอบที่ดีและยังอธิบายทั้งหมดตอบรหัสตาม
Massimiliano Kraus

งานนี้สำหรับฉันเนื่องจากโปรแกรมแก้ไขจากgit stash show --patchไม่มีไฟล์ที่ไม่ได้ติดตาม
Steven Shaw

คำตอบนี้ช่วยฉันได้มากเนื่องจากฉันไม่สามารถเปิดที่ซ่อนของฉันได้เนื่องจากมีการเปลี่ยนแปลงจำนวนมากใน repo ของฉันเนื่องจากมีการผลักที่ซ่อน
Erik Finnman

1

สิ่งนี้เกิดขึ้นกับฉันหลายครั้งฉันซ่อนไฟล์ที่ไม่ได้ติดตามไว้ด้วย git stash -uซึ่งท้ายที่สุดก็ถูกเพิ่มลงใน repo และฉันไม่สามารถใช้การเปลี่ยนแปลงที่ซ่อนอยู่ได้อีกต่อไป

ฉันไม่พบวิธีบังคับgit stash pop/applyให้แทนที่ไฟล์ดังนั้นฉันจึงลบสำเนาในเครื่องของไฟล์ที่ไม่ได้ติดตามซึ่งถูกซ่อนไว้ก่อน (ใช้ความระมัดระวังเนื่องจากจะลบการเปลี่ยนแปลงใด ๆ ที่ยังไม่ได้กระทำ ) จากนั้นจึงใช้การเปลี่ยนแปลงที่ซ่อนไว้ :

rm `git ls-tree -r stash@{0}^3 --name-only`
git stash apply

สุดท้ายฉันใช้ git status , git diffและเครื่องมืออื่น ๆ ในการตรวจสอบและเพิ่มกลับมาบางส่วนจากไฟล์ออกถ้ามีบางสิ่งบางอย่างที่ขาดหายไป


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

git add --all
git commit -m "dummy"
rm `git ls-tree -r stash@{0}^3 --name-only`
git stash apply

ใช้เครื่องมือใดก็ได้ที่เหมาะกับคุณเพื่อรวมการเปลี่ยนแปลงที่มุ่งมั่นก่อนหน้านี้กลับเข้าไปในไฟล์ภายในเครื่องและลบดัมมี่คอมมิต:

git reset HEAD~1

0

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

รายละเอียด:ฉันได้ใช้git stash save -aตรวจสอบต้นแบบเพื่อรวบรวมและดูพฤติกรรมดั้งเดิมจากนั้นพยายามนำกลับมาทั้งหมดเพื่อแก้ไขต่อไป เมื่อฉันตรวจสอบสาขาของฉันและพยายามป๊อปไฟล์ที่ถูกเพิกเฉยของฉันยังคงอยู่ที่นั่นก่อนที่จะบันทึกที่เก็บ นั่นเป็นเพราะการชำระเงินของมาสเตอร์มีผลกับไฟล์ที่คอมมิตเท่านั้น - มันไม่ได้ล้างไฟล์ที่ถูกละเว้น ดังนั้นป๊อปจึงล้มเหลวโดยพื้นฐานแล้วบอกว่าไม่ต้องการกู้คืนไฟล์ที่ถูกละเว้นที่ซ่อนไว้ด้านบนของไฟล์ที่ยังอยู่ที่นั่น โชคไม่ดีที่ฉันไม่สามารถหาวิธีเริ่มเซสชันการผสานกับพวกเขาได้

ในที่สุดฉันเคยgit clean -f -d -xลบไฟล์ที่ถูกเพิกเฉย ที่น่าสนใจใน ~ 30 ของฉัน 4 ไฟล์ยังคงอยู่หลังจากทำความสะอาด (ฝังอยู่ในไดเรกทอรีย่อย) ฉันจะต้องหาว่าพวกเขาอยู่ในหมวดหมู่ใดจึงต้องลบด้วยตนเอง

แล้วป๊อปของฉันก็ทำสำเร็จ



-1

วิธีแก้ปัญหาอื่น ๆ :

cd to/root/your/project

# Show what git will be remove
git clean -n

# If all is good
git clean -f

# If not all is good, see
git clean --help

# Finish
git stash pop

ข้อผิดพลาดที่กล่าวถึงในคำถามเกิดจากไฟล์ที่มีอยู่ทั้งในสแตกและไดเร็กทอรีการทำงาน การทำความสะอาดจะแก้ไขได้ก็ต่อเมื่อไฟล์นี้ไม่มีการติดตามซึ่งไม่แน่นอนเสมอไป (ไม่ใช่กรณีของ OP เนื่องจากเขาได้ไฟล์จากการดึง)
Xavier Poinas

-1

ด้วย Git 2.14.x / 2.15 (Q3 2017) qwertzguy 's วิธีการแก้ปัญหาจาก 2014 จะไม่จำเป็นอีกต่อไป

ก่อนไตรมาสที่ 3 ปี 2017 คุณต้องลบไฟล์ที่มีปัญหาจากนั้นลองซ่อนป๊อป / ใช้อีกครั้ง
ด้วยการเปิดตัว Git ครั้งต่อไปคุณจะไม่ต้องทำเช่นนั้น

ดูกระทำ bbffd87 (11 สิงหาคม 2017) โดยนิโคลัส Morey-Chaisemartin (nmorey )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 0ca2f32 , 23 สิงหาคม 2017)

stash: ล้างไฟล์ที่ไม่ได้ติดตามก่อนรีเซ็ต

หากเรียกgit stash -uใช้ repo ที่มีไฟล์ที่ไม่ถูกละเว้นอีกต่อไปเนื่องจากการแก้ไขgitignoreไฟล์ในปัจจุบันไฟล์นี้จะถูกซ่อนไว้ แต่จะไม่ถูกลบออกจากโครงสร้างการทำงาน
นี่เป็นเพราะการgit-stashทำครั้งแรกreset --hardซึ่งจะล้างการ .gitignoreแก้ไขไฟล์แล้วโทรgit cleanออกโดยปล่อยให้ไฟล์ไม่ถูกแตะต้อง
สาเหตุนี้git stash popล้มเหลวเนื่องจากไฟล์ที่มีอยู่ที่จะล้มเหลวเนื่องจากไฟล์ที่มีอยู่

แพทช์นี้เพียงแค่สลับลำดับระหว่างการทำความสะอาดและการรีเซ็ตและเพิ่มการทดสอบสำหรับ usecase นี้


-1

วิธีที่ปลอดภัยที่สุดในการติดตามการซ่อน

git stash -u

สิ่งนี้จะซ่อนทั้งหมดรวมถึงการเปลี่ยนแปลงที่ไม่ได้จัดฉาก

git stash drop

หลังจากดำเนินการเสร็จแล้วให้นำที่ซ่อน "ปลอดภัย" ออก


ตามที่อธิบายไว้ในstackoverflow.com/a/23743125/6309นั่นจะไม่สามารถใช้ได้กับ Git 2.14 หรือน้อยกว่าเสมอไป จะทำงานร่วมกับ Git 2.15: stackoverflow.com/a/46027357/6309
VonC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.