เปลี่ยนตำแหน่งไดเรกทอรีที่เก็บ Git


200

ด้วย Git / Github สำหรับ Windows, ถ้าฉันมีพื้นที่เก็บข้อมูลที่มีไดเรกทอรีนี้: C:\dir1\dir2สิ่งที่ฉันต้องทำเพื่อย้ายไฟล์ repo เพื่อC:\dir1? เห็นได้ชัดว่าฉันสามารถคัดลอกและวางไฟล์ได้ แต่ฉันต้องทำอะไรในด้าน Git

ฉันมี repo นี้ใน GitHub และฉันใช้ Git Bash และ GitHub สำหรับ Windows


1
ดูคำตอบนี้มันเหมือนกับการย้ายไปยังโฟลเดอร์อื่นหรือคอมพิวเตอร์เครื่องอื่น
rekenerd

คำตอบ:


236

เพียงคัดลอกเนื้อหาไดเรกทอรีทำงานทั้งหมด (รวมถึง.gitไดเรกทอรีที่ซ่อนอยู่) สิ่งนี้จะย้ายไดเรกทอรีการทำงานทั้งหมดไปยังไดเรกทอรีใหม่และจะไม่ส่งผลกระทบต่อที่เก็บระยะไกลบน GitHub

หากคุณใช้ GitHub สำหรับ Windows คุณสามารถย้ายที่เก็บโดยใช้วิธีการข้างต้น อย่างไรก็ตามเมื่อคุณคลิกที่เก็บในแอปพลิเคชันจะไม่สามารถค้นหาได้ ในการแก้ไขปัญหานี้เพียงคลิกที่วงกลมสีน้ำเงินด้วย! เลือก Find It แล้วเรียกดูไดเรกทอรีใหม่


3
แต่วิธีการเกี่ยวกับ GitHub สำหรับ Windows ติดตาม repo ท้องถิ่น? จะต้องมีการกำหนดค่าบางอย่างในตอนท้าย

3
เมื่อฉันทำสิ่งนี้บน Windows มันบังคับให้ฉันสร้าง repo ใหม่
472084

1
@Jleagle พวกเขาอาจเปลี่ยนไปตั้งแต่คำตอบนี้ถูกโพสต์ ฉันจะดูและอัปเดตคำตอบหากจำเป็น
ctor

2
ไม่ควรขอให้คุณสร้าง repo ใหม่: หากเกิดขึ้นคุณจะพลาดไฟล์ git (อาจเป็นไฟล์ที่ซ่อนอยู่) เกิดขึ้นกับฉันและเมื่อฉันลองอีกครั้งฉันสังเกตเห็นว่าฉันพลาดบางอย่างไป
Juan

1
ฉันชนะ หลังจากที่ฉันย้ายโฟลเดอร์ด้วยตนเองไปยังตำแหน่งใหม่จากนั้นฉันเปิด Git GUI App อีกครั้งและย้ายโฟลเดอร์โครงการด้วยตนเองที่นั่น วิธีนี้ใช้ได้กับฉัน
kuncevic.dev

42

ฉันไม่แน่ใจคำถามดังนั้นนี่คือคำตอบสองข้อ:

หากคุณต้องการย้ายที่เก็บของคุณ:

เพียงแค่คัดลอกพื้นที่เก็บข้อมูลทั้งหมด (พร้อม.gitไดเรกทอรี)

ไม่มีเส้นทางที่แน่นอนใน.gitโครงสร้างและไม่มีสิ่งใดที่จะป้องกันไม่ให้มันย้ายดังนั้นคุณไม่มีอะไรจะทำหลังจากย้าย ลิงก์ทั้งหมดไปยัง GitHub (ดูใน.git/config) จะทำงานเหมือนเดิม

หากคุณต้องการย้ายไฟล์ภายในที่เก็บ:

เพียงแค่ย้ายไฟล์ git statusแล้วเพิ่มการเปลี่ยนแปลงที่ระบุไว้ใน ถัดไปcommitจะทำสิ่งที่จำเป็น คุณยินดีที่จะเรียนรู้ว่าจะไม่มีการทำซ้ำไฟล์: การย้ายไฟล์ในคอมไพล์เกือบจะไม่มีค่าใช้จ่าย


1
แต่วิธีการเกี่ยวกับ GitHub สำหรับ Windows ติดตาม repo ท้องถิ่น? จะต้องมีการกำหนดค่าบางอย่างในตอนท้าย

@ user596075 อยู่ใน.gitไดเรกทอรี
OrangeDog

24

หากคุณกำลังใช้GitHub Desktopงานอยู่ให้ทำตามขั้นตอนต่อไปนี้:

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

8

ในขณะที่คำถามเกี่ยวข้องกับ Git สำหรับ Windows ดูเหมือนว่าจะเป็นผลลัพธ์ที่ดีที่สุดแม้ว่าจะค้นหา Visual Studio Tools สำหรับ Git (ส่วนขยายใน VS 2012 สนับสนุนดั้งเดิมใน VS 2013)

การใช้โซลูชันด้านบนเป็นแนวทางฉันได้พิจารณาว่าเครื่องมือ Git ของ Visual Studio ทำให้การย้าย repos (หรือแม้แต่โครงสร้างไดเรกทอรีทั้งหมดสำหรับ repos ทั้งหมด) ในเครื่องนั้นง่ายมาก

1) ปิด Visual Studio 2) ย้ายโฟลเดอร์ Repo ไปยังตำแหน่งใหม่ 3) เปิด Visual Studio เปิด Team Explorer เปลี่ยนเป็นมุมมอง "เชื่อมต่อ" (ไอคอนปลั๊กอินที่ด้านบน) 3a) หาก Repos ยังคงแสดงเส้นทางเก่าให้คลิกรีเฟรชเพื่อบังคับการอัปเดต 4) Repos ที่ถูกย้ายในเครื่องไม่ควรแสดงใน " Local Git Repositories " 5) คลิกเพิ่ม (ไม่ใช่ใหม่หรือโคลน) และเลือกโฟลเดอร์ repo เพื่อเพิ่ม

ในขั้นตอนที่ 5 คุณเพียงแค่ระบุเส้นทางการค้นหาและการค้นหาจะรวมโฟลเดอร์ย่อยทั้งหมดโดยอัตโนมัติ หากคุณมีหลาย repos ภายใต้รากเดียว (repos อิสระเพียงแค่มีโฟลเดอร์หลักเดียวกัน) จากนั้นเลือกผู้ปกครองจะรวม repos ทั้งหมดที่พบด้านล่าง

ตัวอย่าง: E: \ Repos \ RepoA E: \ Repos \ RepoB E: \ Repos \ RepoC

ใน Visual Studio Team Explorer [เพิ่ม]> "E: \ Repos \"> [เพิ่ม] จะส่งคืนทั้งสามไปยังที่เก็บข้อมูลในเครื่อง


6

แม้ว่าคำตอบก่อนหน้าทั้งหมดดูเหมือนจะบอกว่าคุณสามารถย้ายไดเรกทอรีและไม่มีเส้นทางที่แน่นอนในโครงสร้าง. git ฉันพบว่าสิ่งนี้ไม่จริงเมื่อใช้ git จาก Cygwin

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

fatal: Invalid path '<part_of_the_original_repo_path>': No such file or directory

ฉันใช้ grep เพื่อหาว่าในไฟล์. git / config ในส่วน [core] เป็นตัวแปร worktree ซึ่งเก็บเส้นทางที่แน่นอนของ repo git ของฉัน การเปลี่ยนแปลงนี้แก้ไขปัญหาให้ฉันได้


4

ฉันใช้ปลั๊กอินคอมไพล์ Visual Studio และฉันมีบางเว็บไซต์ที่ทำงานบน IIS ฉันต้องการย้าย วิธีง่ายๆที่เหมาะกับฉัน:

  1. ปิด Visual Studio

  2. ย้ายรหัส (รวมถึงโฟลเดอร์คอมไพล์ ฯลฯ )

  3. คลิกที่ไฟล์โซลูชันจากตำแหน่งใหม่

สิ่งนี้จะรีเฟรชการแมปไปยังตำแหน่งใหม่โดยใช้ไฟล์ git ในระบบที่มีอยู่ซึ่งถูกย้าย เมื่อฉันกลับมาใน Visual Studio หน้าต่าง Team Explorer ของฉันแสดง repos ในตำแหน่งใหม่


2

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

หวังว่าสิ่งนี้จะช่วยให้ใครบางคน


1

สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันย้าย repo จาก (เช่น) c: \ project1 \ เป็น c: \ repo \ project1 \ และ Git สำหรับ windows ไม่แสดงการเปลี่ยนแปลงใด ๆ

สถานะ git แสดงข้อผิดพลาดเนื่องจากหนึ่งใน submodules "ไม่ใช่ที่เก็บ git" และแสดงเส้นทางเก่า เช่น (เปลี่ยนชื่อเพื่อปกป้อง IP)

ร้ายแรง: ไม่ใช่ที่เก็บ git: C: /project1/.git/modules/subproject/subproject2 ร้ายแรง: 'สถานะ git --porcelain' ล้มเหลวในโครงการย่อย submodule

ฉันต้องแก้ไขไฟล์. git ด้วยตนเองใน submodules เพื่อชี้ไปยังเส้นทางสัมพัทธ์ที่ถูกต้องไปยัง repo ของ repodule (ในไดเรกทอรี. git / modules หลักของ repo)


1

รายงานจากอนาคต: เมษายน 2018

ฉันต้องการทำให้ repos ภายในเครื่องของฉันเป็นปกติบน Mac และ Windows ของฉันซึ่งได้ลงเอยด้วยโฟลเดอร์ท้องถิ่นต่างๆ

ไคลเอนต์ Windows 10 ทำให้ฉันผ่าน "ไม่สามารถหา"> "ค้นหา" รูทีนน่าเบื่อ แต่ไม่น่ากลัว ยังจำเป็นต้องอัปเดต "เส้นทางการทำสำเนา" ในตัวเลือกสำหรับการใช้งานในอนาคต

เมื่อฉันรวมโฟลเดอร์ mac ไคลเอนต์ Github เพิ่งพบพวกเขาอีกครั้ง - ฉันไม่ต้องทำอะไรเลย!


0

ในการตั้งค่าพา ธ โลคัลดีฟอลต์เป็นที่เก็บของคุณทุกครั้งที่คุณโคลนหนึ่งในนั้นคุณต้องโคลนที่เก็บหนึ่งครั้งและตั้งค่า Localpath: / your-path จากนั้น github จะตรวจจับพา ธ นั้นเป็นค่าเริ่มต้นโดยอัตโนมัติ


สิ่งนี้ดูเหมือนจะไม่ตอบคำถามเดิม - บางทีคุณสามารถอธิบายได้ว่าคำตอบของคุณเพิ่มบางอย่างเข้ากับคำตอบที่ยอมรับแล้วได้อย่างไร ขอบคุณ
rwp

0

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

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

$ git add -A
#And commiting them
$ git commit -m "Relocating image demo files"
#And finally, push
$ git push -u local_repo -f HEAD:master

หวังว่ามันจะช่วย

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