Khi bạn thực hiện bản sao đầu tiên của mình bằng cú pháp
git clone username@server:gitRepo.git
Có thể sử dụng kho lưu trữ cục bộ của bạn để tìm tên của bản sao ban đầu đó không?
(Vì vậy, trong ví dụ trên, tìm gitRepo.git
.)
Khi bạn thực hiện bản sao đầu tiên của mình bằng cú pháp
git clone username@server:gitRepo.git
Có thể sử dụng kho lưu trữ cục bộ của bạn để tìm tên của bản sao ban đầu đó không?
(Vì vậy, trong ví dụ trên, tìm gitRepo.git
.)
Câu trả lời:
Trong kho lưu trữ gốc, .git/config
tệp chứa tất cả thông tin về các kho và chi nhánh từ xa. Trong ví dụ của bạn, bạn nên tìm kiếm một cái gì đó như:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = server:gitRepo.git
Ngoài ra, lệnh Git git remote -v
hiển thị tên và URL kho lưu trữ từ xa. Kho lưu trữ từ xa "gốc" thường tương ứng với kho lưu trữ ban đầu, từ đó bản sao cục bộ được sao chép.
git remote show origin
để xem nhiều thông tin hơn về điều khiển từ xa đó.
git remote -v
chỉ đọc và viết .git/config
.
git config --get remote.origin.url
git remote show origin
gọi ra mạng.
Đây là lệnh Bash nhanh, mà có lẽ bạn đang tìm kiếm, sẽ chỉ in một tên cơ sở của kho lưu trữ từ xa:
Nơi bạn lấy từ :
basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)
Ngoài ra, nơi bạn đẩy đến :
basename $(git remote show -n origin | grep Push | cut -d: -f2-)
Đặc biệt là -n
tùy chọn làm cho lệnh nhanh hơn nhiều.
Tôi vấp phải câu hỏi này khi cố gắng lấy organization/repo
chuỗi từ máy chủ git như github hoặc gitlab.
Điều này làm việc cho tôi:
git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
Nó sử dụng sed
để thay thế đầu ra của git config
lệnh chỉ bằng tên tổ chức và repo.
Một cái gì đó giống như github/scientist
được khớp với lớp nhân vật [[:graph:]]
trong biểu thức chính quy.
Các \1
sed nói thay thế mọi thứ chỉ với các nhân vật phù hợp.
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'
Nó đã được thử nghiệm với ba kiểu URL khác nhau:
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'