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

Git เป็นระบบควบคุมเวอร์ชันแจกจ่ายแบบโอเพนซอร์ซ (DVCS) ใช้แท็กนี้สำหรับคำถามที่เกี่ยวข้องกับการใช้งาน Git และเวิร์กโฟลว์ อย่าใช้แท็ก [github] สำหรับปัญหาที่เกี่ยวข้องกับ Git เพียงเพราะพื้นที่เก็บข้อมูลเกิดขึ้นเพื่อโฮสต์บน GitHub นอกจากนี้อย่าใช้แท็กนี้สำหรับคำถามการเขียนโปรแกรมทั่วไปที่เกี่ยวข้องกับที่เก็บ Git

12
Git: ดูความมุ่งมั่นล่าสุดของฉัน
git commitผมแค่อยากจะเห็นไฟล์ที่มีความมุ่งมั่นในช่วงกระทำตรงตามที่ผมเห็นรายการเมื่อฉันได้ น่าเสียดายที่การค้นหา git "last commit" log ใน Google ทำให้ฉันไม่มีที่ไหนเลย และ git diff HEAD^..HEAD ไม่ใช่สิ่งที่ฉันต้องการแน่นอนเพราะมันพ่นความกล้าของการเปลี่ยนแปลงเช่นกัน
389 git 

4
ยกเลิกการคอมไพล์เชอร์รี่เลือกหรือไม่
ฉันวิ่งgit cherry-pick <hash>และมีการรวมความขัดแย้ง ฉันไม่ต้องการแก้ไขข้อขัดแย้งฉันแค่ต้องการยกเลิกการคัดเชอร์รี่ เมื่อทำผสานจริง (กับgit merge) git merge --abortมีประโยชน์ อะไรที่เทียบเท่ากับการเก็บเชอร์รี่?

19
อะไรคือสิ่งที่คุณต้องการ. สัญลักษณ์ถ้าคุณใช้ CocoaPods
ฉันทำการพัฒนา iOS มาสองสามเดือนแล้วและเพิ่งเรียนรู้เกี่ยวกับห้องสมุดCocoaPods ที่มีแนวโน้มสำหรับการจัดการการพึ่งพา ฉันลองใช้กับโปรเจ็กต์ส่วนตัว: เพิ่มการพึ่งพาKiwiใน Podfile ของฉันวิ่งpod install CocoaPodsTest.xcodeprojและvoilaมันใช้งานได้ดี สิ่งเดียวที่ฉันสงสัยคือ: ฉันจะเช็คอินอะไรและฉันจะเพิกเฉยต่อการควบคุมเวอร์ชันได้อย่างไร ดูเหมือนชัดเจนว่าฉันต้องการตรวจสอบใน Podfile เองและอาจเป็นไฟล์. xcworkspace ด้วยเช่นกัน แต่ฉันไม่สนใจไดเรกทอรี Pods /? มีไฟล์อื่น ๆ ที่จะถูกสร้างขึ้นตามถนน (เมื่อฉันเพิ่มการอ้างอิงอื่น ๆ ) ที่ฉันควรเพิ่มใน. gitignore ของฉันด้วยหรือไม่

4
กดคอมไพล์และแท็กพร้อมกัน
ฉันรู้เหตุผลว่าเป็นงานที่แยกต่างหากเพื่อเก่าธรรมดาgit push --tags git pushการกดแท็กควรเป็นทางเลือกที่ใส่ใจเนื่องจากคุณไม่ต้องการดันแท็กโดยไม่ตั้งใจ ไม่เป็นไร. แต่มีวิธีที่จะผลักดันทั้งสองเข้าด้วยกันหรือไม่ (นอกเหนือจากgit push && git push --tags)
387 git 

9
ทำไม Git repo ของฉันถึงเข้าสู่ HEAD ที่แยกออกมา
ฉันลงเอยด้วยหัวหน้าเดี่ยววันนี้ปัญหาเดียวกับที่อธิบายไว้ใน: git push บอกทุกอย่างที่ทันสมัยแม้ว่าฉันจะมีการเปลี่ยนแปลงในท้องถิ่น เท่าที่ฉันรู้ฉันไม่ได้ทำอะไรผิดไปจากปกติเพียงแค่คอมมิชชันและผลักดันจาก repo ท้องถิ่นของฉัน ดังนั้นฉันจะจบลงด้วยการได้detached HEADอย่างไร
387 git 


17
ผลักดันที่เก็บ Git ที่มีอยู่ไปยัง SVN
ฉันทำงานทั้งหมดของฉันใน Git และผลักดันให้ GitHub ฉันมีความสุขมากกับทั้งซอฟต์แวร์และเว็บไซต์และฉันไม่ต้องการเปลี่ยนวิธีการทำงานของฉันในตอนนี้ อาจารย์ที่ปรึกษาระดับปริญญาเอกของฉันขอให้นักเรียนทุกคนทำงานในที่เก็บ SVN ที่โฮสต์อยู่ที่มหาวิทยาลัย ฉันได้พบเอกสารและแบบฝึกหัดมากมายเกี่ยวกับการดึงที่เก็บ SVN ที่มีอยู่ลงใน Git แต่ไม่มีอะไรเกี่ยวกับการผลักดันที่เก็บ Git ไปยังที่เก็บ SVN ใหม่ ฉันคาดหวังว่าจะต้องมีวิธีในการทำเช่นนี้ด้วยการผสมผสานของ git-svn และสาขาที่สดใหม่และการลดราคาและเงื่อนไขที่ยอดเยี่ยมทั้งหมด แต่ฉันเป็นมือใหม่ Git และไม่รู้สึกมั่นใจกับพวกเขาเลย จากนั้นฉันต้องการเรียกใช้คำสั่งสองสามคำสั่งเพื่อส่งไปยังที่เก็บ SVN เมื่อฉันเลือก ฉันต้องการใช้ Git ต่อไปและเพียงแค่มีที่เก็บ SVN ใน Git ฉันจะเป็นคนเดียวที่เคยยอมรับกับ SVN หากสิ่งนี้สร้างความแตกต่าง
384 svn  git  git-svn 

8
กดมุ่งมั่นที่จะสาขาอื่น
เป็นไปได้ไหมที่จะคอมมิทและผลักดันการเปลี่ยนแปลงจากสาขาหนึ่งไปอีกสาขาหนึ่ง สมมติผมมุ่งมั่นที่เปลี่ยนแปลงในBRANCH1และต้องการที่จะผลักดันให้BRANCH2 จากBRANCH1จะสามารถทำได้: git push origin **BRANCH2** แล้วรีเซ็ต BRANCH1 หรือไม่
384 git  git-branch 


5
วิธีการย้ายมุ่งมั่นบางอย่างที่จะขึ้นอยู่กับสาขาอื่นในคอมไพล์?
สถานการณ์: เจ้านายอยู่ที่ X quickfix1 อยู่ที่ X + 2 คอมมิชชัน ดังนั้น: o-o-X (master HEAD) \ q1a--q1b (quickfix1 HEAD) จากนั้นฉันก็เริ่มทำงานกับ quickfix2 แต่โดยบังเอิญเอา quickfix1 เป็นสาขาต้นทางเพื่อคัดลอกไม่ใช่ต้นแบบ ตอนนี้ quickfix2 อยู่ที่ X + 2 คอมมิต + 2 คอมมิทที่เกี่ยวข้อง o-o-X (master HEAD) \ q1a--q1b (quickfix1 HEAD) \ q2a--q2b (quickfix2 HEAD) ตอนนี้ฉันต้องการมีสาขาที่มี quickfix2 แต่ไม่มี 2 คอมมิตที่เป็นของ quickfix1 q2a'--q2b' …
381 git  commit  patch 

8
รับแฮชเวอร์ชัน Git สั้น ๆ
มีวิธีที่สะอาดกว่าในการรับแฮชรุ่นสั้น ๆHEADจาก Git หรือไม่? ฉันต้องการที่จะเห็นผลลัพธ์เดียวกันกับที่ฉันได้รับจาก: git log -n 1 | head -n 1 | sed -e 's/^commit //' | head -c 8 ฉันใช้คำสั่งข้างต้นเพื่อสร้างสตริงรุ่น แต่สิ่งนี้ดียิ่งขึ้น: git describe --tags มันจะออกสายเช่น0.1.12(แท็กกระทำกระทำ) หรือ0.1.11-5-g0c85fbc(ห้ากระทำหลังจากแท็ก)
381 git 

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

18
git: สาขาของคุณอยู่ข้างหน้าโดย X มุ่งมั่น
สิ่งนี้เกิดขึ้นจริงได้อย่างไร ฉันกำลังทำงานใน repo หนึ่งด้วยตัวเองในขณะนี้ดังนั้นเวิร์กโฟลว์ของฉัน: เปลี่ยนไฟล์ ผูกมัด ทำซ้ำ 1-2 จนกระทั่งพอใจ กดเพื่อหลัก จากนั้นเมื่อฉันทำgit statusมันจะบอกฉันว่าสาขาของฉันอยู่ข้างหน้าโดย X มุ่งมั่น (สันนิษฐานว่าจำนวนเดียวกันของการกระทำที่ฉันได้ทำ) เป็นเพราะเมื่อคุณกดรหัสมันไม่ได้อัพเดตไฟล์แคชในเครื่องของคุณ (ในโฟลเดอร์. git)? git pullดูเหมือนจะ 'แก้ไข' ข้อความแปลก ๆ นี้ แต่ฉันก็ยังสงสัยว่าทำไมมันถึงเกิดขึ้นบางทีฉันใช้คอมไพล์ผิด? รวมถึงสิ่งที่สาขาจะพิมพ์ในข้อความ สาขาในท้องถิ่นของฉันเป็นผู้นำ คุณจะผลัก / ดึงสาขาปัจจุบันที่ไหน ฉันกำลังผลักดันไปที่ GitHub และดึงคอมพิวเตอร์เครื่องใดก็ตามที่ฉันกำลังทำงานอยู่ ณ เวลานั้นสำเนาในเครื่องของฉันจะอัปเดตอยู่เสมอเพราะฉันเป็นคนเดียวที่ทำงานกับมัน มันไม่ได้ตรวจสอบ repo ระยะไกลจริง ๆ นั่นคือสิ่งที่ฉันคิดว่าฉันคิดว่าฉันจะทำให้แน่ใจว่าความเข้าใจของฉันมันถูกต้อง คุณกำลังส่งข้อโต้แย้งพิเศษไปหรือไม่ ไม่ใช่ที่ฉันเห็น, บางทีมีการกำหนดค่าบางอย่างที่ตลกเกิดขึ้นในตอนท้ายของฉัน? $ git status # On branch master …
379 git  git-commit 

4
Git branching รุ่นอะไรที่เหมาะกับคุณ?
บริษัท ของเรากำลังใช้โมเดลการแยกสาขา / ปล่อย / แก้ไขอย่างง่ายและต้องการคำแนะนำเกี่ยวกับรูปแบบการแยกสาขาที่ทำงานได้ดีที่สุดสำหรับ บริษัท หรือกระบวนการพัฒนาของคุณ เวิร์กโฟลว์ / โมเดลการแยกสาขา ด้านล่างนี้เป็นคำอธิบายหลักสามประการของเรื่องนี้ที่ฉันเคยเห็น แต่พวกเขาขัดแย้งกันบางส่วนหรือไม่ไปไกลพอที่จะแยกแยะปัญหาที่ตามมาที่เราพบเจอ (ดังอธิบายด้านล่าง) ดังนั้นทีมของเราเริ่มต้นจนถึงการแก้ปัญหาที่ไม่ดีนัก คุณทำสิ่งที่ดีกว่า gitworkflows (7) หน้าคู่มือ (nvie) โมเดลการแยกสาขาของ Git ที่ประสบความสำเร็จ (reinh) เวิร์กโฟลว์ Git สำหรับทีม Agile การรวม vs การรีบูต (ประวัติเรียงตามกันพันกัน) ควรpull --rebaseหรือรอด้วยการรวมกลับไปที่การฉีดยาจนกว่างานของคุณจะเสร็จสิ้น? โดยส่วนตัวแล้วฉันโน้มตัวไปสู่การรวมตัวกันเพราะนี่เป็นการรักษาภาพประกอบที่แสดงให้เห็นว่างานเริ่มต้นและสิ้นสุดที่ใดและฉันก็ชอบmerge --no-ffจุดประสงค์นี้ด้วย มันมีข้อเสียอื่น ๆ อย่างไรก็ตาม หลายคนยังไม่ได้ตระหนักถึงคุณสมบัติที่มีประโยชน์ของการรวม - นั่นไม่ใช่การสับเปลี่ยน (การรวมสาขาหัวข้อเข้ากับต้นแบบไม่ได้หมายถึงการผสานต้นแบบเข้ากับหัวข้อหัวข้อ) ฉันกำลังมองหากระบวนการทำงานที่เป็นธรรมชาติ ข้อผิดพลาดบางครั้งเกิดขึ้นเนื่องจากขั้นตอนของเราไม่ได้จับสถานการณ์เฉพาะด้วยกฎง่าย ๆ ตัวอย่างเช่นการแก้ไขที่จำเป็นสำหรับการออกรุ่นก่อนหน้านี้แน่นอนว่าควรอิงจากดาวน์สตรีมอย่างเพียงพอเพื่อให้สามารถรวมอัปสตรีมในสาขาทั้งหมดที่จำเป็น (การใช้คำเหล่านี้ชัดเจนเพียงพอหรือไม่) อย่างไรก็ตามมันเกิดขึ้นที่การแก้ไขทำให้มันกลายเป็นต้นแบบก่อนที่นักพัฒนาจะรู้ตัวว่ามันควรจะถูกวางลงต่อไปและถ้ามันถูกผลักไปแล้ว (ยิ่งแย่กว่าการผสานหรืออะไรบางอย่างจากมัน) …

12
จะเปลี่ยน“ git rm -r.” กลับคืนได้อย่างไร?
ฉัน accidentely git rm -r .กล่าวว่า ฉันจะกู้คืนจากสิ่งนี้ได้อย่างไร ฉันไม่ได้กระทำ ฉันคิดว่าไฟล์ทั้งหมดถูกทำเครื่องหมายว่าเป็นการลบและถูกลบออกจากการชำระเงินในท้องที่ด้วย แก้ไข:ฉันสามารถ (ถ้าฉันรู้ว่าคำสั่ง) กลับไปใช้ความมุ่งมั่นล่าสุด git rm -r .แต่มันอาจจะดีขึ้นมากถ้าฉันเพียงแค่อาจจะยกเลิกการ git rm -r .เพราะฉันไม่ได้จริงๆว่าสิ่งที่ฉันได้หลังจากที่ผ่านมากระทำและก่อนที่จะ
378 git  git-rm 

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