พุชการเปลี่ยนแปลงคอมไพล์ไปยังไดรฟ์เครือข่ายที่แชร์


90

ทีมสี่คนจะใช้ Git (โดยเฉพาะGithub สำหรับ Windows ) เพื่อพุชการเปลี่ยนแปลงภายในไปยังไดรฟ์เครือข่ายที่แชร์ได้อย่างไร

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

เราสามารถติดตั้ง Git บนไดรฟ์ที่แชร์แล้วไปจากที่นั่นได้ไหม

คำตอบ:


123

ไม่แน่ใจว่าคุณพบสิ่งที่เหมาะกับคุณหรือไม่ แต่ฉันมีข้อเขียนเกี่ยวกับวิธีการทำสิ่งนั้นบนไดรฟ์เครือข่าย windows:

http://tony.halcyonlane.com/blog/2011/09/22/Using-git-at-work-on-a-Windows-network-drive/

จากพรอมต์ cmd เปลี่ยนเป็นไดรฟ์ที่แมปของคุณ

$ cd g:

จากนั้น cd ลงในที่เก็บ git ของคุณในไม่ช้า

สคริปต์ $ cd

จากนั้นสร้างที่เก็บ git ว่าง หากคุณไม่ได้ใช้ตัวเลือก --bare คุณจะมีปัญหาดังนั้นอย่าปล่อยไว้

$ git init - ว่าง

ตอนนี้ถ้าคุณยังไม่มีที่เก็บ git ในเครื่องคุณสามารถโคลนที่เก็บใหม่ได้ทุกที่ที่คุณต้องการโดยการนำทางกลับไปที่ไดรฟ์ในเครื่องของคุณ

$ c:

$ cd งาน / สคริปต์

$ git ไฟล์โคลน: // g: \ scripts

เมื่อคุณโคลนคุณจะได้รับรีโมตที่เรียกว่า "ต้นทาง" โดยอัตโนมัติและคุณสามารถส่งไปยังเซิร์ฟเวอร์เพื่อรักษาความปลอดภัยทุกครั้งที่คุณทำการเปลี่ยนแปลงในเครื่อง

$ git push origin master

หากคุณมีที่เก็บ git อยู่แล้วและคุณแค่ต้องการผลักดันไปยังไดรฟ์ที่แชร์คุณสามารถทำได้จากภายใน git dir ในพื้นที่ของคุณ

$ git remote เพิ่มไฟล์ต้นทาง: // g: \ scripts

$ git push origin master


1
ขอบคุณ - ฉันทำสิ่งนี้สำหรับโครงการส่วนตัวบนเครือข่ายในบ้านของฉัน
Martin Snyder

ฉันทำตามขั้นตอนเหล่านี้ แต่ได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันเรียกใช้ git push origin master error: ไม่สามารถวางไข่ได้: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าวร้ายแรง: ไม่สามารถแยก
NickStees

ขอขอบคุณ. ใช้เวลานานในการค้นหาคำตอบนี้
Simon Huckett

สำหรับใครก็ตามที่ไม่มีการแมปไดรฟ์ที่แชร์จะมี pushd (และ popd) เพื่อสร้าง virtual temp drive เพื่อนำทางไปยัง ( ดูลิงค์ )
LoJo

คุณจะมีปัญหาอะไรถ้าคุณไม่ใช้ - ว่าง? ฉันมีที่เก็บแบบไม่เปลือยในไดรฟ์เครือข่ายและต้องการใช้เป็นรีโมต
Fractaly

24

ขณะนี้ทีมของเราดำเนินการอย่างนี้ นักพัฒนาทุกคนมีสิ่งต่อไปนี้:

  1. ติดตั้ง Git บนเครื่องท้องถิ่น
  2. เข้าถึงไดรฟ์ที่แชร์ส่วนตัวของพวกเขาเอง ( L:)
  3. เข้าถึงไดรฟ์กลุ่มที่แชร์ ( V:)

เรามีที่เก็บ "ระยะไกล" (ตั้งค่าโดยใช้init -bare) บนV:ไดรฟ์และทุกคนมีโคลนในL:ไดรฟ์ส่วนตัว การเปลี่ยนแปลงทั้งหมดจะเกิดขึ้นกับL:ไดรฟ์และดันขึ้นไปที่V:ไดรฟ์ซึ่งจะถูกดึงลงในภายหลังโดยนักพัฒนารายอื่นไปยังที่เก็บข้อมูลส่วนบุคคลของตนในL:ไดรฟ์ของตน วิธีนี้ใช้งานได้โดยไม่มีปัญหาใด ๆ และช่วยลดความจำเป็นในการใช้เซิร์ฟเวอร์ Git


โอเคเยี่ยม! ฉันต้องสร้าง repo ในเครื่องก่อนจากนั้นตั้งค่ารีโมตของ repo นั้นบนไดรฟ์ที่แชร์หรือไม่
user1549303

1
@ user1549303 - นั่นคือวิธีที่เราทำ คุณสามารถสร้าง repo ในเครื่อง (ที่เก็บL:ไดรฟ์ของเรา) โดยใช้git initจากนั้นสร้างรีโมต ( v:ไดรฟ์ของเรา) โดยใช้git clone --bare(หรือ a git init --bareแล้วกดจากL:)
eykanal

@eykanal - ปัจจุบันทีมของฉันใช้ไลบรารีควบคุมซอร์สที่เก่าแก่และน่ากลัวและเรากำลังต้องการเปลี่ยนไปใช้คอมไพล์ สิ่งหนึ่งที่ไลบรารีปัจจุบันของเราให้ฉันทำคือดูว่าใครเช็คเอาต์ไฟล์ แต่ลืมตรวจสอบการเปลี่ยนแปลง ด้วย git ที่เก็บทั้งหมดจะอยู่ในเครื่องดังนั้นคุณจะรู้ได้อย่างไรว่ามีคนลืมกดไปที่ "v:"
Kevin Buchan

4
@KevinBuchan - ฉันขอแนะนำให้คุณโพสต์ความคิดเห็นของคุณเป็นคำถามใหม่
eykanal

1
Git ตอบสนองเมื่อนักพัฒนาสองคนพยายามผลักดันไปยังพื้นที่เก็บข้อมูลที่แชร์เดียวกัน (พูดว่า V :) ในเวลาเดียวกัน คุณมีปัญหากับการดำเนินการผลักพร้อมกันหรือไม่?
Jordi

2

คุณสามารถเพิ่มรีโมทอีกอันที่ชี้ไปยังไดรฟ์เครือข่ายของคุณ(git remote)

จากนั้นคุณสามารถ push pull คล้ายกับที่คุณทำกับ github

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