เมื่อคุณทำการโคลนครั้งแรกโดยใช้ไวยากรณ์
git clone username@server:gitRepo.git
เป็นไปได้ไหมที่จะใช้ที่เก็บในเครื่องของคุณเพื่อค้นหาชื่อของโคลนเริ่มต้นนั้น
(ในตัวอย่างด้านบนให้ค้นหาgitRepo.git
)
เมื่อคุณทำการโคลนครั้งแรกโดยใช้ไวยากรณ์
git clone username@server:gitRepo.git
เป็นไปได้ไหมที่จะใช้ที่เก็บในเครื่องของคุณเพื่อค้นหาชื่อของโคลนเริ่มต้นนั้น
(ในตัวอย่างด้านบนให้ค้นหาgitRepo.git
)
คำตอบ:
ในรูทที่เก็บ.git/config
ไฟล์จะเก็บข้อมูลทั้งหมดเกี่ยวกับที่เก็บระยะไกลและสาขา ในตัวอย่างของคุณคุณควรมองหาสิ่งต่างๆเช่น:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = server:gitRepo.git
นอกจากนี้คำสั่ง Git ยังgit remote -v
แสดงชื่อที่เก็บแบบรีโมตและ URL ที่เก็บระยะไกล "ต้นกำเนิด" มักจะสอดคล้องกับที่เก็บต้นฉบับซึ่งสำเนาในเครื่องถูกโคลน
git remote show origin
เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับรีโมทนั้นได้อีกด้วย
git remote -v
.git/config
git config --get remote.origin.url
git remote show origin
โทรออกไปยังเครือข่าย
นี่คือคำสั่ง Bash ด่วนที่คุณอาจค้นหาจะพิมพ์เฉพาะชื่อฐานของที่เก็บระยะไกล:
คุณดึงข้อมูลจากที่ไหน:
basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)
อีกทางเลือกหนึ่งที่คุณกดไปที่ :
basename $(git remote show -n origin | grep Push | cut -d: -f2-)
โดยเฉพาะตัว-n
เลือกทำให้คำสั่งเร็วขึ้นมาก
ฉันใช้สิ่งนี้:
basename $(git remote get-url origin) .git
gitRepo
ซึ่งผลตอบแทนบางอย่างเช่น (ลบส่วน.git
ท้ายของคำสั่งเพื่อส่งคืนสิ่งที่ต้องการgitRepo.git
)
(หมายเหตุ: ต้องใช้ Git เวอร์ชัน 2.7.0 หรือใหม่กว่า)
ฉันสะดุดกับคำถามนี้ที่พยายามดึงไฟล์ organization/repo
สตริงจากโฮสต์คอมไพล์เช่น github หรือ gitlab
สิ่งนี้ใช้ได้ผลสำหรับฉัน:
git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
ใช้sed
เพื่อแทนที่ผลลัพธ์ของgit config
คำสั่งด้วยชื่อองค์กรและ repo
สิ่งที่ต้องการgithub/scientist
จะถูกจับคู่โดยคลาสอักขระ[[:graph:]]
ในนิพจน์ทั่วไป
ตัว\1
บอก sed จะแทนที่ทุกอย่างด้วยอักขระที่ตรงกันเท่านั้น
git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
ได้รับการทดสอบด้วยรูปแบบ URL ที่แตกต่างกันสามแบบ:
echo "Fetch URL: http://user@pass:gitservice.org:20080/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: Fetch URL: git@github.com:home1-oss/oss-build.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: https://github.com/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
ซึ่งจะทำงานเพื่อให้ได้ค่า
#!/usr/bin/env bash
repoSlug="$(git config --get remote.origin.url | cut -d/ -f5 | cut -d. -f1)"
echo ${repoSlug}
เวอร์ชันของคำสั่ง Powershell สำหรับชื่อ git repo:
(git config --get remote.origin.url) -replace '.*/' -replace '.git'