ตกลงเพื่อคัดลอก (ไม่ใช่โคลน) ที่เก็บ git โดยใช้คำสั่ง Unix พื้นฐานหรือไม่?


22

ฉันค่อนข้างใหม่ในการใช้ git และสงสัยว่าการคัดลอกที่เก็บ Git ด้วยคำสั่ง UNIX ทั่วไป (เช่นcpหรือtar/ untag) มากกว่าที่จะgit cloneทำได้

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

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


ว้าวฉันอยู่ในสถานการณ์นี้เพราะฉันมีไฟล์บางไฟล์อยู่ภายใต้การควบคุมของแหล่งที่มาและบางอย่างไม่ได้และฉันมีสิทธิ์ของไฟล์ที่ฉันต้องการที่จะรักษา ฉันดีใจที่คุณถามคำถามนี้
Joe C

คำตอบ:


21

มันเป็นเรื่องปกติอย่างสมบูรณ์แบบ

git เก็บประวัติความเป็นมาความมุ่งมั่นและอื่น ๆ ทั้งหมดในเว็บไซต์ - นี่เป็นทรัพย์สินพื้นฐานของ DCVS

เทคนิคการพูดgitสามารถทำงานได้ดีกับที่เก็บคัดลอกวิ่งไปรอบ ๆ ทุกที่เพราะจุดรวมของ DCVS คือว่ามันไม่ได้มีที่จะรู้ว่าสิ่งที่เกิดขึ้นที่ด้านนอกของพื้นที่เก็บข้อมูลใด ๆ ที่กำหนด , และในความเป็นจริงไม่ได้จนกว่าคุณจะบอกว่ามัน

ใช้หลักการเดียวกันนี้


1
ความเข้าใจของฉันคือที่เก็บโคลนจะมีลิงค์กลับไปยังผู้ปกครอง การใช้คำสั่งคัดลอก OS จะไม่สร้างลิงก์นั้น
Tony

@Tony True แต่คุณสามารถลบลิงก์นั้นออกได้โดยใช้git remote remove originซึ่งทำให้ Git ไม่สามารถใช้พื้นที่เก็บข้อมูลหลักเป็นอัปสตรีม
new123456

2

คุณควรจะสามารถคัดลอกไดเรกทอรีการทำงานทั้งหมดไปยังที่อื่นบนระบบของคุณและให้มันทำงานต่อได้ตามปกติเมื่อใช้ Git, Hg หรือ SVN ฉันไม่สามารถแสดงความคิดเห็นใน SCM อื่น ๆ


0

นี่เป็นกรณีการใช้งานที่ผิดปกติมากกว่า แต่ ...

ฉันเคยเห็นrepoยูทิลิตี้สร้างลิงก์สัญลักษณ์ใน.gitไดเรกทอรี ในกรณีนี้เมื่อคุณทำสำเนาคุณต้องการตรวจสอบให้แน่ใจว่าคุณอ้างถึงลิงก์สัญลักษณ์ เช่น:

cp -r -L <source-repo-dir> <destination-repo-dir>

0

ไม่เป็นไร แต่ถ้าคุณกำลังจะแบ่งปัน repo ของคุณกับคนอื่นโปรดพิจารณาสิ่งต่อไปนี้ :

  • configไฟล์ของคุณอาจมีการ remotes คนอื่นอาจไม่สนใจ
  • logsโฟลเดอร์ของคุณจะมีการอ้างอิงที่คุณอาจไม่ต้องการแชร์ Git นั้นยอดเยี่ยมที่ให้คุณทำสิ่งที่น่ารังเกียจในคอมพิวเตอร์ของคุณจนกว่าคุณจะพอใจกับผลลัพธ์สุดท้ายจากนั้นจึงผลักมันไปที่รีโมตเพื่อแบ่งปัน (บางครั้ง) ประวัติศาสตร์ที่น่ารังเกียจบางอย่างอาจอยู่ในการอ้างอิงของคุณดังนั้นจึงเป็นการดีกว่าที่จะไม่แบ่งปัน IMHO
  • info/excludeไฟล์ของคุณอาจเพิกเฉยบางไฟล์เท่านั้นที่คุณต้องการเพิกเฉย
  • คุณสามารถมีตะขอกิ่งไม้และสิ่งอื่น ๆ ที่เป็นส่วนตัวและคุณไม่ต้องการแบ่งปัน ...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.