ฉันมีที่เก็บ Git ที่เก็บนี้มีที่เก็บระยะไกลหลายแห่ง (ฉันคิดว่า) ฉันจะรับรายการของที่เก็บข้อมูลรีโมตที่เป็นของที่เก็บดังกล่าวได้อย่างไร?
ชอบgit list --remotesหรืออะไรแบบนั้น?
ฉันมีที่เก็บ Git ที่เก็บนี้มีที่เก็บระยะไกลหลายแห่ง (ฉันคิดว่า) ฉันจะรับรายการของที่เก็บข้อมูลรีโมตที่เป็นของที่เก็บดังกล่าวได้อย่างไร?
ชอบgit list --remotesหรืออะไรแบบนั้น?
คำตอบ:
คุณจะได้รับรายการของ URL ระยะไกล ๆ git remote -vการกำหนดค่าด้วยคำสั่ง
สิ่งนี้จะทำให้คุณมีลักษณะดังนี้:
base /home/***/htdocs/base (fetch)
base /home/***/htdocs/base (push)
origin git@bitbucket.org:*** (fetch)
origin git@bitbucket.org:*** (push)
-vสำหรับ "verbose" เป็นจริงตัวเลือกทั่วไป git branchนอกจากนี้ยังได้รับการสนับสนุนโดย ความแตกต่างพื้นฐานคือตัวเลือกสั้นและยาว (เดี่ยวกับเส้นประคู่โดยพื้นฐาน) ที่กล่าวว่าการสนับสนุน - รายการที่มีคำremoteสั่งย่อยจะสมเหตุสมผล ถ้าคุณต้องการมันจริงๆฉันจะบอกว่าส่งคำขอคุณสมบัติ
หากคุณต้องการชื่อของที่เก็บข้อมูลระยะไกลเท่านั้น (และไม่ใช่ข้อมูลอื่นใด) การสร้างแบบง่ายgit remoteก็เพียงพอแล้ว
$ git remote
iqandreas
octopress
origin
FWIW ฉันมีคำถามเดียวกัน แต่ฉันไม่สามารถหาคำตอบได้ที่นี่ อาจไม่พกพาได้ แต่อย่างน้อยสำหรับ gitolite ฉันสามารถเรียกใช้สิ่งต่อไปนี้เพื่อรับสิ่งที่ฉันต้องการ:
$ ssh git@git.xxx.com info
hello akim, this is gitolite 2.3-1 (Debian) running on git 1.7.10.4
the gitolite config gives you the following access:
R W android
R W bistro
R W checkpn
...
คำตอบที่บอกวิธีการค้นหาสาขาที่มีอยู่:
git branch -r
หรือที่เก็บสำหรับโครงการเดียวกัน[ดูหมายเหตุด้านล่าง] :
git remote -v
มีอีกกรณีหนึ่งคือ คุณอาจต้องการทราบเกี่ยวกับที่เก็บโครงการอื่น ๆ ที่โฮสต์บนเซิร์ฟเวอร์เดียวกัน
ในการค้นหาข้อมูลนั้นฉันใช้ SSH หรือPuTTYเพื่อเข้าสู่โฮสต์และlsค้นหาไดเรกทอรีที่มีที่เก็บอื่น ๆ ตัวอย่างเช่นถ้าฉันโคลนที่เก็บโดยพิมพ์:
git clone ssh://git.mycompany.com/git/ABCProject
และต้องการทราบว่ามีอะไรอีกบ้างฉันเข้าสู่ git.mycompany.com ผ่าน SSH หรือ PuTTY และพิมพ์:
ls /git
สมมติlsว่าพูดว่า:
ABCProject DEFProject
ฉันสามารถใช้คำสั่ง
git clone ssh://git.mycompany.com/git/DEFProject
เพื่อเข้าถึงโครงการอื่น
หมายเหตุ: โดยปกติแล้วจะ
git remoteบอกฉันเกี่ยวกับorigin- พื้นที่เก็บข้อมูลที่ฉันโคลนโครงการgit remoteจะเป็นประโยชน์ถ้าคุณกำลังร่วมมือกับคนสองคนขึ้นไปที่ทำงานในโครงการเดียวกันและเข้าถึงที่เก็บของกันและกันโดยตรงแทนที่จะส่งผ่านทุกอย่างผ่านแหล่งกำเนิด
วิธีง่ายๆในการดูสาขาระยะไกลคือ:
git branch -r
วิธีดูสาขาท้องถิ่น:
git branch -l
git ls-remoteควรแสดงรีโมททั้งหมดที่มีให้สำหรับดึงข้อมูลจากเซิร์ฟเวอร์ upstream ( git-scm.com/docs/git-ls-remote ) ฉันเชื่อว่าคำตอบทั้งหมดในหน้านี้จะบอกวิธีการแสดงรายการรีโมตและการติดตามสาขาที่คุณได้ดึงข้อมูลมาแล้วนั่นคือ Catch-22 คุณไม่สามารถเรียกรีโมตได้จนกว่าคุณจะรู้วิธีการอ้างอิงรีโมตบนเซิร์ฟเวอร์ upstream
วิธีการเหล่านี้ไม่มีวิธีการที่ผู้ถามถามและซึ่งฉันก็มักจะต้องการเช่นกัน เช่น:
$ git remote
fatal: Not a git repository (or any of the parent directories): .git
$ git remote user@bserver
fatal: Not a git repository (or any of the parent directories): .git
$ git remote user@server:/home/user
fatal: Not a git repository (or any of the parent directories): .git
$ git ls-remote
fatal: No remote configured to list refs from.
$ git ls-remote user@server:/home/user
fatal: '/home/user' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
จุดทั้งหมดของการทำเช่นนี้คือคุณไม่มีข้อมูลใด ๆ ยกเว้นผู้ใช้ระยะไกลและเซิร์ฟเวอร์และต้องการค้นหาสิ่งที่คุณสามารถเข้าถึงได้
คำตอบส่วนใหญ่ถือว่าคุณกำลังสอบถามจากภายในชุดการทำงาน git ผู้ถามกำลังสมมติว่าคุณไม่ได้
เพื่อเป็นตัวอย่างในทางปฏิบัติสมมติว่ามีที่เก็บ foo.git บนเซิร์ฟเวอร์ ใครบางคนในภูมิปัญญาของพวกเขาตัดสินใจว่าพวกเขาจำเป็นต้องเปลี่ยนเป็น foo2.git มันจะดีจริง ๆ ที่จะทำรายการของไดเรกทอรี git บนเซิร์ฟเวอร์ และใช่ฉันเห็นปัญหาสำหรับคอมไพล์ มันคงจะดีถ้ามี
git remote -vเพราะ -v สำหรับ verbosegit remoteให้รายการรีโมทอย่างง่าย (ฐานกำเนิดในกรณีนี้) ตัวเลือก -v รวมถึง url สำหรับการดำเนินการดึงข้อมูลและพุชของรีโมทแต่ละตัว