เปลี่ยนชื่อไดเรกทอรีในที่เก็บ Github จากระยะไกลโดยตรงจาก Local Git Linux?


10

นี่คือที่เก็บ Git ของฉัน:

https://github.com/benqzq/ulcwe

มีชื่อ dir localและฉันต้องการเปลี่ยนชื่อเป็นชื่ออื่น (พูดจากจากlocalเป็นxyz)

การเปลี่ยนผ่าน GitHub GUI ด้วยตนเองเป็นฝันร้ายเพราะฉันต้องเปลี่ยนชื่อไดเรกทอรีสำหรับแต่ละไฟล์แยกกัน (GitHub ยังไม่ได้รวมฟังก์ชั่น "เปลี่ยนชื่อไดเรกทอรี" เชื่อหรือไม่)

หลังจากติดตั้ง Git ฉันลองคำสั่งนี้:

git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit

ในขณะที่ฉันไม่ได้รับพรอมต์สำหรับรหัสผ่าน GitHub ของฉันฉันได้รับข้อผิดพลาดนี้:

fatal: Not a git repository (or any parent up to mount point /mnt/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

ฉันรู้ว่าประเด็นทั้งหมดใน Git คือการดาวน์โหลดโครงการเปลี่ยนแปลงทดสอบแล้วกดไปที่ผู้ให้บริการโฮสติ้ง (GitHub ในกรณีนี้) แต่หากต้องการเปลี่ยนไดเรกทอรีฉันต้องการดำเนินการโดยตรง เป็นไปได้ด้วย Git?

ฉันควรใช้โปรแกรมอื่นหรือไม่?


2
ไม่การดำเนินการทางไกลโดยตรงไม่สามารถทำได้ใน Git คุณต้องทำการโคลน (ดาวน์โหลด) โครงการเปลี่ยนจากนั้นกดกลับไปที่ผู้ให้บริการโฮสต์ แต่คุณจะใช้ Github ได้อย่างไรโดยไม่ต้องมีโครงการในคอมพิวเตอร์ของคุณ? คุณทำการเปลี่ยนแปลงทั้งหมดผ่าน Github web UI - นั่นไม่ได้ฟังดูสะดวกหรือมีประสิทธิภาพมากนัก
user253751

ในกรณีนี้การใช้ UI มักจะสะดวกและมีประสิทธิภาพสำหรับฉันสิ่งสำคัญที่ฉันพลาดคือการเปลี่ยนชื่อ dir โดยตรง ...
user9303970

คำตอบ:


28

ข้อความแสดงข้อผิดพลาดร้ายแรงระบุว่าคุณกำลังทำงานจากที่ใดที่ไม่ใช่ที่เก็บโคลนของที่เก็บ git ของคุณ ดังนั้นเริ่มจากการโคลนที่เก็บ git ก่อน:

git clone https://github.com/benqzq/ulcwe.git

จากนั้นใส่มัน:

cd ulcwe

และเปลี่ยนชื่อไดเรกทอรี:

git mv local xyz

เพื่อให้การเปลี่ยนแปลงนั้นสามารถแบ่งปันได้คุณต้องยอมรับ:

git commit -m "Rename local to xyz"

ตอนนี้คุณสามารถผลักดันมันไปยังที่เก็บ git ระยะไกลของคุณ:

git push

และคุณจะเห็นการเปลี่ยนแปลงในอินเทอร์เฟซ GitHub


14
กล่าวอีกอย่างหนึ่งก็คือมันเหมือนกับการทำงานอื่น ๆ ของไฟล์ในที่เก็บ Git ของคุณ
Lightness Races ในวงโคจร

2
@LightnessRacesin หรือขอให้ผู้ถามใช้ UI ทางเว็บสำหรับการเปลี่ยนแปลงทั้งหมด
user253751

5

ไม่ไม่มีวิธีที่จะทำเช่นนี้เป็นการดำเนินการโดยตรงเนื่องจากวิธีโครงสร้าง git

วิธีการทำงานของคอมไพล์คือเก็บสำเนาของที่เก็บทั้งหมดรวมถึงประวัติทั้งหมดไปยังทุกที่เดียว

Github หรือ Bitbucket หรือผู้ให้บริการโฮสติ้งอื่น ๆ เป็นเพียงสำเนาของที่เก็บ git ของคุณโดยมีเว็บอินเตอร์เฟสสวย ๆ อยู่ด้านบนซึ่งถือว่าเป็นแหล่งกลางของความจริงในเวิร์กโฟลว์ส่วนใหญ่อย่างไรก็ตามยูทิลิตี้ git ไม่ทราบเรื่องนี้

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

วิธีที่ง่ายที่สุดในการเปลี่ยนชื่อโฟลเดอร์ใน repo git คือการโคลนในเครื่อง

git clone [url]
cd [git-folder]

หากคุณมีสำเนาของ repo ในพื้นที่อยู่แล้วให้ดึงออกมาเพื่อให้แน่ใจว่าคุณอยู่ใน repo ระยะไกล

git pull

ทำการเปลี่ยนแปลงที่คุณต้องการภายใน

git mv local xyz

ซึ่งควรเพิ่มโดยอัตโนมัติไปยังพื้นที่การแสดงละครโดย github จากนั้นคุณควรกระทำและผลักดันการเปลี่ยนแปลงเหล่านี้

git commit -m 'Renamed local to xyz'
git push

สิ่งนี้จะคอมมิตการเปลี่ยนแปลงที่เก็บในเครื่องของคุณแล้วส่งการเปลี่ยนแปลงเหล่านี้ไปยังสำเนาระยะไกลของที่เก็บในกรณีนี้ Github


8
ไม่ประวัติไม่ได้ถูกจัดเก็บเป็นการเปลี่ยนแปลงระหว่างการกระทำแต่ละการคอมมิทเป็นการสนับสนุนตนเอง การเปลี่ยนแปลงระหว่างคอมมิทจะถูกคำนวณใหม่ตามคำขอทุกครั้งที่ต้องการ
Stephen Kitt

3
"ประวัติทั้งหมดจะถูกดาวน์โหลดไปยังทุกสถานที่เดียว" - ไม่ใช่กับgit clone --depth
user11153

2
การเขียนประวัติศาสตร์ไม่จำเป็นสำหรับสิ่งนี้ - GitHub สามารถสร้างการกระทำได้ (เช่นเดียวกับที่ทำเมื่อแก้ไขไฟล์บนเว็บไซต์โดยตรง)
user1686

0

เป็นไปได้ที่จะเปลี่ยนชื่อไดเรกทอรีโดยไม่ต้องโคลนที่เก็บโดยใช้ GitHub API ฉันไม่ได้ตระหนักถึงการดำเนินการใด ๆ

ที่มา: https://stackoverflow.com/a/31567094/370786

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