คำถามติดแท็ก version-control

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


20
เหตุใดฉันจึงควรใช้การควบคุมเวอร์ชัน [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการในวันที่ 11 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังอ่านบล็อกที่ผู้เขียนกล่าวถึงเรื่องนี้ "โค้ดจะไม่มีอยู่เว้นแต่จะได้รับการตรวจสอบในระบบควบคุมเวอร์ชันใช้การควบคุมเวอร์ชันสำหรับทุกสิ่งที่คุณทำไม่ว่าจะเป็นการควบคุมเวอร์ชัน SVN, Git หรือแม้แต่ CVS ให้เชี่ยวชาญและใช้งานได้" ฉันไม่เคยใช้การควบคุมเวอร์ชันใด ๆ และฉันไม่พบว่ามันยอดเยี่ยมขนาดนั้น ฉันเคย googled และดูมันก่อนหน้านี้ แต่ฉันแค่ต้องการมันเป็นเงื่อนไขของเด็ก ๆ ถ้าคุณจะกรุณา ตามที่ฉันเข้าใจในตอนนี้สิ่งต่างๆเช่น SVN มีไว้สำหรับจัดเก็บโค้ดของคุณทางออนไลน์สำหรับกลุ่มผู้ใช้หรือนักพัฒนาอื่น ๆ เพื่อให้สามารถเข้าถึงรหัสเดียวกันได้ เมื่อคุณอัปเดตรหัสบางส่วนคุณสามารถส่งเวอร์ชันใหม่ได้และ SVN จะเก็บสำเนาของรหัสเก่ารวมทั้งรหัสใหม่ที่คุณอัปเดต นี่เป็นแนวคิดพื้นฐานของมันหรือว่าฉันเข้าใจผิดไปหมด? ถ้าฉันถูกมันอาจจะไม่มีประโยชน์มากนักถ้าฉัน: ห้ามมีคนอื่นทำงานเกี่ยวกับรหัส อย่าวางแผนที่จะให้คนอื่นมีรหัส
123 svn  git  version-control  cvs 


9
วิธีโยกย้าย / แปลงจาก SVN เป็น Mercurial (hg) บน windows
ฉันกำลังมองหาเครื่องมือในการย้ายที่เก็บ SVN สองสามแห่งไปยัง Mercurial พร้อมประวัติป้ายกำกับและอื่น ๆ ฉันใช้ TortoiseHg (Windows x32) ดังนั้น ConvertExtensions จึงถูกยกเลิก มีข้อมูลบางอย่างเกี่ยวกับวิธีการทำกระบวนการนี้บนกล่อง Linux ( hgsvn ) แต่ฉันไม่มีเครื่อง Linux ฉันสามารถใช้สคริปต์ Python บน Windows ได้หรือไม่ ถ้าเป็นเช่นนั้นฉันต้องทำอย่างไร? หรือฉันสามารถใช้เครื่องมืออื่นใดในการทำกระบวนการนี้ได้บ้าง โดยทั่วไปฉันจะแปลงโครงการ SVN เป็น Mercurial ได้อย่างไร

6
Intellij Idea 9/10 โฟลเดอร์ใดที่ต้องตรวจสอบ (หรือไม่เช็คอิน) การควบคุมแหล่งที่มา
ทีมของเราเพิ่งย้ายจาก Netbeans มาเป็น Intellij 9 Ultimate และจำเป็นต้องทราบว่าโดยทั่วไปแล้วไฟล์ / โฟลเดอร์ใดที่ควรถูกแยกออกจากการควบคุมแหล่งที่มาเนื่องจากไม่ใช่ "เวิร์กสเตชันพกพา" กล่าวคือเส้นทางอ้างอิงที่มีอยู่ในคอมพิวเตอร์ของผู้ใช้เพียงคนเดียว เท่าที่ฉันบอกได้ Intellij ต้องการที่จะเพิกเฉยต่อโครงการ .ide ส่วนใหญ่ซึ่งรวมถึง .idea/artifacts/* .idea/inspectionProfiles/* .idea/copyright/* .idea/dataSources.ids .idea/dataSources.xml .idea/workspace.xml อย่างไรก็ตามดูเหมือนว่าต้องการตรวจสอบ.imlไฟล์ที่มีอยู่ในไดเร็กทอรีรากของแต่ละโมดูล เดิมทีฉันตรวจสอบใน.ideaไดเร็กทอรีทั้งหมดผ่านทางบรรทัดคำสั่งซึ่งเห็นได้ชัดว่าไอเดีย "ควร" ไม่สนใจอะไร .ideaโดยทั่วไปไดเรกทอรีทั้งหมดถูกละเว้นหรือไม่

6
Git cherry pick vs rebase
ฉันเพิ่งเริ่มทำงานกับ Git เมื่อไปที่หนังสือ Gitออนไลน์ฉันพบสิ่งต่อไปนี้ในส่วน "Git Rebase": ด้วยคำสั่ง rebase คุณสามารถนำการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นในสาขาหนึ่งและเล่นซ้ำในอีกสาขาหนึ่งได้ (อ้างจาก: http://git-scm.com/book/en/Git-Branching-Rebasing ) ฉันคิดว่านี่เป็นคำจำกัดความที่แน่นอนของ git cherry-pick (ใช้การคอมมิตใหม่หรือชุดของออบเจ็กต์คอมมิตในสาขาที่เช็คเอาต์ในปัจจุบัน) อะไรคือความแตกต่างระหว่างทั้งสอง?

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

4
ลบไฟล์ที่แก้ไขจากคำขอดึง
ฉันมีไฟล์ที่แก้ไข 3 ไฟล์ (ไม่มีไฟล์ใหม่) ในคำขอดึงข้อมูลในขณะนี้ ฉันต้องการลบหนึ่งในไฟล์เหล่านั้นออกจากคำร้องขอดึงเพื่อให้คำร้องขอดึงมีการเปลี่ยนแปลงกับไฟล์สองไฟล์เท่านั้นและปล่อยไฟล์ที่สามไว้ในสถานะเดิม ฉันได้ลองสองสามสิ่งแล้ว (ตรวจสอบเวอร์ชันดั้งเดิมของไฟล์ ฯลฯ ... ) แต่ยังคงแสดงเป็นไฟล์ที่เปลี่ยนแปลงใน PR มีวิธีแก้ปัญหานี้หรือไม่?

3
Mercurial (hg) คอมมิตเฉพาะบางไฟล์
ฉันพยายามส่งเฉพาะบางไฟล์ด้วย Mercurial เนื่องจาก hg มีการเพิ่มอัตโนมัติเมื่อใดก็ตามที่ฉันพยายามทำการเปลี่ยนแปลงจึงต้องการคอมมิตไฟล์ทั้งหมด แต่ฉันไม่ต้องการอย่างนั้นเพราะไฟล์บางไฟล์ยัง "ไม่พร้อม" มี hg commit -I thefile.foo แต่นี่เป็นเพียงไฟล์เดียว วิธีที่ดีกว่าสำหรับฉันคือถ้าฉันสามารถปิดการเพิ่มอัตโนมัติใน Git เป็นไปได้หรือไม่

9
Git push: "จุดกำเนิด" ที่ร้ายแรงดูเหมือนจะไม่ใช่ที่เก็บ git - ร้ายแรงไม่สามารถอ่านจากที่เก็บระยะไกลได้ "
ฉันรู้ว่ามีการถามคำถามที่คล้ายกันนี้แล้ว แต่ฉันเชื่อว่าปัญหาของฉันเกิดจากความผิดพลาดที่ฉันได้ทำไปก่อนหน้านี้ดังนั้นจึงแตกต่างออกไปให้ฉันอธิบาย ทุกอย่างทำงานได้อย่างราบรื่นอย่างที่ฉันทำได้: git add . ไฟล์ทั้งหมดจากที่เก็บในเครื่องของฉัน git commit -m "message here" เพื่อเพิ่มข้อความในการกระทำของฉัน git push origin master เพื่ออัปโหลดไฟล์ของฉันไปยัง GitHub git push heroku master เพื่ออัปโหลดไฟล์ของฉันไปยัง Heroku อย่างไรก็ตามในบางจุดฉันได้สร้างสาขาใหม่ที่เรียกว่าในพื้นที่add-calendar-modelในกรณีที่ขั้นตอนต่อไปของการพัฒนาแอปจะไปทางทิศใต้ ... ... ซึ่งเป็นสิ่งที่เกิดขึ้น อย่างไรก็ตามแม้จะพยายามหลายครั้งฉันก็ไม่ได้รับรหัสเริ่มต้นนั่นคือรหัสจากก่อนที่ฉันจะสร้างสาขาใหม่ - จากmasterสาขาไปยังที่เก็บในเครื่องของฉัน ดังนั้นฉันจึงตัดสินใจลบไฟล์ทั้งหมดด้วยตนเองจากที่เก็บในเครื่องและสาขาgit cloneของฉันmasterจาก GitHub ด้วยวิธีนี้ฉันได้ไฟล์ทั้งหมดกลับคืนมา แต่ตอนนี้ฉันไม่สามารถพุชไปยังที่เก็บระยะไกลได้อีก ทุกครั้งที่ฉันพยายามเรียกใช้git push origin add-calendar-modelหรือgit push origin masterฉันได้รับข้อผิดพลาดต่อไปนี้: fatal: 'origin' does not appear to …

30
ทำไมพวกเขาไม่สอนสิ่งเหล่านี้ในโรงเรียน? [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ในช่วงฤดูร้อนฉันโชคดีพอที่จะเข้าสู่ Google Summer of Code ฉันได้เรียนรู้มากมาย (อาจจะมากกว่าที่ฉันเรียนมาจากผลรวมของการเรียนในมหาวิทยาลัยทั้งหมด) ฉันสงสัยจริงๆว่าทำไมพวกเขาไม่สอนบางสิ่งที่ฉันเรียนรู้เร็วกว่านี้ในโรงเรียน หากต้องการชื่อไม่กี่: การทดสอบหน่วย การควบคุมเวอร์ชัน การพัฒนาที่คล่องตัว สำหรับฉันแล้วดูเหมือนว่าพวกเขาใช้เวลาส่วนใหญ่ในการสอนสิ่งอื่น ๆ เช่นโครงสร้างข้อมูลและอัลกอริทึมล่วงหน้า ในขณะที่ฉันยังคิดว่าสิ่งเหล่านี้สำคัญมากที่จะต้องเรียนรู้ตั้งแต่เนิ่นๆทำไมพวกเขาไม่สอนสามคนนี้ให้มากกว่านี้ก่อนหน้าพวกเขาล่ะ หรือเป็นแค่โรงเรียนของฉันที่ไม่ได้สอนเรื่องนี้มากนัก? อย่าเข้าใจฉันผิดฉันไม่คิดว่ามหาวิทยาลัยจะสอนแฟชั่นการเขียนโปรแกรมที่ทันสมัยที่สุดเสมอไป แต่อาจารย์ของฉันไม่ควรสอนฉันอย่างอื่นนอกจาก "วาดแผนภาพก่อนเริ่มเขียนโค้ด"

2
สร้างรายการไฟล์ที่เปลี่ยนแปลงระหว่างเวอร์ชัน hg
ฉันต้องการสร้างรายการไฟล์ที่เปลี่ยนแปลงระหว่างการแก้ไขสองครั้งในไดเร็กทอรีที่กำหนดใน Mercurial โดยเฉพาะอย่างยิ่งฉันไม่สนใจในสิ่งที่เปลี่ยนแปลง แต่ไฟล์ใดที่เปลี่ยนแปลงในไดเร็กทอรีนั้น เช่นสมมติว่าระหว่างthenและotherthenไฟล์มีการเปลี่ยนแปลงเพียง 2 ไฟล์: >hg hypothetical-command -r then:otherthen foo.baz bar.baz > คำสั่งสมมุติคืออะไร? ฉันได้ลองใช้ diff และ log แล้ว แต่ฉันไม่เห็นวิธีโน้มน้าวให้พวกเขาทำ: ไม่ว่าฉันจะได้รับโปรแกรมแก้ไข (diff) หรือฉันได้รับ repo ทั้งหมด (บันทึก)

8
ค้นหาชื่อของที่เก็บดั้งเดิมที่คุณโคลนจาก Git
เมื่อคุณทำการโคลนครั้งแรกโดยใช้ไวยากรณ์ git clone username@server:gitRepo.git เป็นไปได้ไหมที่จะใช้ที่เก็บในเครื่องของคุณเพื่อค้นหาชื่อของโคลนเริ่มต้นนั้น (ในตัวอย่างด้านบนให้ค้นหาgitRepo.git)

10
ข้อผิดพลาด Mercurial: ยกเลิกไม่ได้ระบุชื่อผู้ใช้
ปัญหาใน WindowsXP (น่าจะเกิดขึ้นกับการติดตั้ง Win ทั้งหมด) ครั้งแรกโดยใช้ Mercurial ฉันพบคำตอบในที่ที่ไม่ชัดเจนดังนั้นฉันจึงถาม / ตอบคำถามด้วยตัวเองเพื่อให้คนอื่นไม่ต้องค้นหาเหมือนฉัน ครั้งแรกที่ใช้ Mercurial บนเครื่อง เพิ่ม repoz ใหม่: c:\bla\>hg add ไม่มีปัญหา. ถัดไปกระทำ: c:\bla\hg commit ข้อผิดพลาด: ยกเลิก: ไม่ได้ระบุชื่อผู้ใช้ (โปรดดู "hg help config")

5
Git ละเว้นและเป้าหมาย Maven
ใคร ๆ ก็รู้ว่าเป็นไปได้หรือไม่ที่จะเพิกเฉยต่ออินสแตนซ์ทั้งหมดของไดเร็กทอรีเฉพาะในโครงสร้างไฟล์ที่จัดการโดย git ฉันต้องการยกเว้นโฟลเดอร์ 'เป้าหมาย' ทั้งหมดในโครงการ maven ที่มีโมดูลย่อยจำนวนหนึ่ง ฉันรู้ว่าฉันสามารถแยกแต่ละรายการในระดับบนสุด. gitignore ได้อย่างชัดเจน แต่ฉันอยากจะระบุรูปแบบเช่น ** / target / * ที่นั่นเพื่อให้มันละเว้นอินสแตนซ์ในไดเรกทอรีย่อยโดยอัตโนมัติหรือไม่ เป็นไปได้หรือไม่

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