Câu hỏi Làm thế nào tôi có thể xác định URL mà một kho lưu trữ Git cục bộ ban đầu được nhân bản từ?


Tôi đã lấy một dự án từ GitHub vài ngày trước. Tôi đã phát hiện ra rằng có một số dĩa trên GitHub, và tôi đã bỏ quên để lưu ý cái nào tôi đã lấy ban đầu. Làm thế nào tôi có thể xác định được những nhánh nào mà tôi đã kéo?


2777
2017-11-03 16:47


gốc


Với git 2.7 (Q4 2015), git remote get-url origin Sẽ có thể. Xem câu trả lời của tôi bên dưới - VonC
Tôi chắc chắn bạn có nghĩa là git remote get-url origin. - shiri
codingaffairs.blogspot.com/2017/01/… - Hammad Tariq
git remote get-url origin không làm việc cho tôi - có thể không được chấp nhận? git remote show origin đã làm việc. - Klik
git remote -v cung cấp cho bạn rất nhiều thông tin, bao gồm cả điều này. - Thorbjørn Ravn Andersen


Các câu trả lời:


Nếu bạn chỉ muốn URL từ xa, hoặc tính toàn vẹn tham chiếu đã bị hỏng:

git config --get remote.origin.url

Nếu bạn yêu cầu đầu ra đầy đủ hoặc toàn vẹn tham chiếu là nguyên vẹn:

git remote show origin

Khi đang sử dụng git clone (từ GitHub, hoặc bất kỳ kho lưu trữ nguồn nào cho vấn đề đó) tên mặc định cho nguồn của bản sao là "origin". Sử dụng git remote show sẽ hiển thị thông tin về tên từ xa này. Một vài dòng đầu tiên sẽ hiển thị:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: git@github.com:jaredpar/VsVim.git
  Push  URL: git@github.com:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

Nếu bạn muốn sử dụng giá trị trong tập lệnh, bạn sẽ sử dụng lệnh đầu tiên được liệt kê trong câu trả lời này.


3939
2017-11-03 16:50



Sử dụng git config như được mô tả bên dưới thay vào đó nếu sử dụng jgit với amazon-s3. - barryku
Mặc dù không liên quan đến mục đích của câu hỏi gốc, xin lưu ý rằng nếu cố gắng lấy "URL đẩy" và nhiều URL được nhập cho điều khiển từ xa được chỉ định, bạn sẽ cần sử dụng git remote show origin (tùy chọn với cờ -n do @Casey cung cấp) hoặc với git remote -v theo đề xuất của @Montaro và @rodel. - Amazingant
"Nếu tính toàn vẹn tham chiếu đã bị hỏng" nghĩa là gì? Có một bình luận cho một câu trả lời khác đề cập đến một trường hợp URL từ xa là "không có sẵn nữa": là nó? nơi "không có sẵn" có nghĩa là "không thể truy cập" ?? - Eric Lebigot
@ JaredPar Bạn ngụ ý gì bởi tính toàn vẹn tham chiếu? - Akshayraj Kore
Tôi thấy thật đáng kinh ngạc khi câu hỏi này đã được bỏ phiếu rất nhiều lần và xem một số lần điên rồ. Một minh chứng tích cực cho Stack-overflow, và một tiêu cực để Git - Mads Boyd-Madsen


Nếu bạn muốn điều này cho mục đích kịch bản, bạn có thể chỉ nhận được URL với

git config --get remote.origin.url

498
2017-11-03 19:35



Đây là. Cách nhanh hơn giải pháp trên. - K-RAN
Đây là câu trả lời chính xác. Đó là cách nhanh hơn và thậm chí nó hoạt động, nếu url từ xa không còn nữa (git remote show origin chỉ hiển thị "conq: kho lưu trữ không tồn tại."). - apfelbox
Đây không phải là câu trả lời đúng vì tùy chọn cấu hình url.<base>.insteadOf. Xem câu trả lời của tôi - git có một lệnh cho mục đích này. - arcresu
@arcresu Cool, +1 cho bạn! Trong phòng thủ của tôi, lệnh đó đã không được thêm vào cho đến tháng 3 năm 2011, và nó không được ghi chép cho đến tháng 9 năm 2012. - Cascabel
Dường như không hoạt động với --git-dir hoặc --work-tree - Catskul


Bạn co thể thử:

git remote -v

Nó sẽ in tất cả các URL nạp / đẩy của điều khiển từ xa của bạn.


422
2018-01-29 12:01





Để nhận được câu trả lời:

git ls-remote --get-url [REMOTE]

Điều này tốt hơn việc đọc cấu hình; Tham khảo đến trang người đàn ông cho git-ls-remote:

--get-url

Mở rộng URL của kho lưu trữ từ xa đã cho có tính đến   bất kì "url.<base>.insteadOf" cài đặt cấu hình (Xem git-config(1)) và   thoát mà không nói chuyện với điều khiển từ xa.

Như đã chỉ ra bởi @Jefromi, tùy chọn này đã được thêm vào v1.7.5 và không được ghi lại cho đến khi v1.7.12.2 (2012-09).


196
2018-06-02 05:15



tốt nhất: điều này cũng sẽ cung cấp tương tự cho các phiên bản trước> git remote -v | grep fetch | awk '{print $ 2}' - ravi.zombie


Với Git 2.7 (phát hành ngày 5 tháng 1 năm 2015), bạn có một giải pháp mạch lạc hơn bằng cách sử dụng git remote:

git remote get-url origin

(mặt dây chuyền đẹp của git remote set-url origin <newurl>)

Xem cam kết 96f78d3 (16 tháng 9 năm 2015) bởi Ben Boeckel (mathstuf).
(Hợp nhất bởi Junio ​​C Hamano - gitster - - trong cam kết e437cbd, Ngày 05 tháng 10 năm 2015):

remote: thêm sub-get get-url

Mở rộng insteadOf là một phần của ls-remote --url và không có cách nào   mở rộng pushInsteadOf cũng.
  Thêm một get-url tiểu ban để có thể truy vấn cả hai cũng như cách để nhận tất cả các URL được định cấu hình.

get-url:

Truy xuất URL cho điều khiển từ xa.
  Cấu hình cho insteadOf và pushInsteadOf được mở rộng ở đây.
  Theo mặc định, chỉ URL đầu tiên được liệt kê.

  • Với '--push', các URL đẩy được truy vấn thay vì tìm nạp URL.
  • Với '--all', tất cả các URL cho điều khiển từ xa sẽ được liệt kê.

Trước git 2.7, bạn có:

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]

63
2017-10-07 12:07



Sau 5 năm rất nhiều đã thay đổi và đây sẽ là câu trả lời được chấp nhận ngay bây giờ. Nhưng có thể thêm cú pháp trước 2,7. - msparer
@msparer Tôi đã cập nhật câu trả lời. - VonC


Tóm lại, có ít nhất bốn cách:

(Sau đây đã được thử cho kho lưu trữ Linux chính thức)

Thông tin ít nhất:

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

Thêm thông tin:

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

Thậm chí nhiều thông tin hơn:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

43
2018-05-15 15:28



chú thích git config --get remote.origin.url truy xuất URL gốc đã được đặt git remote add ... hoặc là git remote set-url ... trong khi git ls-remote --get-url origin truy xuất URL thực sự được sử dụng để truy cập điều khiển từ xa - có thể khác với sự hiện diện của git config --global url.XXX.insteadOf YYY. Vì vậy, cả hai kết quả đầu ra có thể khác nhau!  Cũng lưu ý rằng git ls-remote --get-url (không có origin) không cần truy xuất origin, thay vào đó nó cho thấy luồng ngược dòng được theo dõi, vì vậy nó sẽ thất bại ví dụ trong trạng thái HEAD tách rời. - Tino


Câu trả lời ngắn:

$ git remote show -n origin

hoặc, một giải pháp thay thế cho tập lệnh nhanh tinh khiết:

$ git config --get remote.origin.url

Một số thông tin:

  1. $ git remote -v sẽ in tất cả các điều khiển từ xa (không phải những gì bạn muốn). Bạn muốn có nguồn gốc đúng không?
  2. $ git remote show origin tốt hơn nhiều, chỉ hiển thị origin nhưng mất quá nhiều thời gian (thử nghiệm trên git phiên bản 1.8.1.msysgit.1).

Tôi đã kết thúc với: $ git remote show -n origin, có vẻ là nhanh nhất. Với -n nó sẽ không tìm nạp các đầu từ xa (các nhánh AKA). Bạn không cần loại thông tin đó, đúng không?

http://www.kernel.org/pub//software/scm/git/docs/git-remote.html

Bạn có thể áp dụng | grep -i fetch cho cả ba phiên bản để chỉ hiển thị URL tìm nạp.

Nếu bạn yêu cầu tốc độ thuần túy, hãy sử dụng:

$ git config --get remote.origin.url

Nhờ vào @Jefromi để chỉ ra điều đó.


16
2018-02-27 18:11





Tôi nghĩ bạn có thể tìm thấy nó dưới .git/config và remote["origin"] nếu bạn không thao túng điều đó.


15
2017-11-03 16:50