2010-04-15 25 views
13

Tôi hiện đang sử dụng git trên windows thông qua sự kết hợp giữa msysgit và Cygwin.Làm cách nào để tôi có thể đính kèm nhiều url vào một điều khiển từ xa git?

Tôi có một máy tính xách tay mà tôi di chuyển xung quanh khá một chút, do đó, nó không phải trên một vị trí nhất quán. Thật không may, tôi không có một tên phù hợp cho nó do tên máy tính không được giải quyết trên tất cả các vị trí tôi kết nối, vì vậy tôi không thể chỉ sử dụng tên máy tính làm máy chủ lưu trữ cho url (ví dụ: git:// compname/repo), vì vậy tôi phải sử dụng địa chỉ IP.

Có cách nào để tôi có thể thêm nhiều url để lấy từ một từ xa cụ thể không? Tôi đã nhìn thấy

git remote set-url --add [--push] <name> <newurl> 

như một cách để thêm nhiều URL vào điều khiển từ xa và tôi có thể xem các cập nhật trong tệp .git/config, nhưng git chỉ cố gắng sử dụng tệp đầu tiên.

Có cách nào để yêu cầu git sử dụng tất cả các url không? Tôi đã thử cả git fetch và git remote update, nhưng không thử gì cả sau url đầu tiên.

Lưu ý rằng tôi chưa thử tính năng này trên Linux, và tôi không thể sửa chữa độ phân giải tên máy tính vì điều này đang hoạt động.

+1

Tôi không nghĩ Git hỗ trợ nhiều URL cho từ xa ** yet ** (tìm nạp từ URL phản hồi đầu tiên, đẩy tới tất cả URL) , do đó bạn phải sử dụng một từ xa cho mỗi URL hiện tại. –

+1

bản sao có thể có của [kéo/đẩy từ nhiều địa điểm từ xa] (http://stackoverflow.com/questions/849308/pull-push-from-multiple-remote-locations) – RedX

+0

Xem http://stackoverflow.com/questions/ 849308/pull-push-from-multiple-remote-locations câu trả lời thứ hai – RedX

Trả lời

0

Tôi khuyên bạn nên sử dụng một số điều khiển từ xa khác làm điểm đồng bộ hóa giữa máy tính xách tay và (các) máy tính khác mà bạn sử dụng.

ví dụ: github.

Nếu bạn muốn giữ riêng tư, hãy thử mở khóa hoặc mã hóa.

+0

Tôi rất muốn có thể làm điều này, nhưng tôi cần phải thiết lập một máy chủ git trên một hộp của Window trên một cơ sở hạ tầng CNTT khá bị khóa để kéo nó đi. Không được phép đẩy vào kho lưu trữ bên ngoài mạng nội bộ. – deterb

1

Cá nhân tôi làm điều tương tự, những gì tôi sử dụng là hai điều khiển từ xa

xứ: vị trí của repo của tôi khi ở nhà foriegn: vị trí của repo của tôi khi bất cứ nơi nào khác (dns của tôi chuyển hướng đến nhà tôi)

sau đó tôi chỉ cần đẩy/kéo đến điều khiển từ xa thích hợp, có một chút lộn xộn nhưng nó hoạt động.

2

Tôi nghĩ tốt nhất của bạn tốt nhất là để thiết lập URI từ xa của bạn để trỏ đến computername nhưng sau đó thêm computername đến file host của bạn (nằm ở %SystemRoot%\system32\drivers\etc\hosts):

computername 192.168.100.34 
# computername 192.168.100.68 

Sau đó, bạn có thể giữ nhiều mục cho các IP khác nhau địa chỉ và nhận xét/bỏ ghi chú khi cần. Không còn rối loạn về việc thay đổi URI từ xa trên cơ sở từng repo, chỉ cần cập nhật ở một nơi và sau đó tất cả các repos sử dụng tên người dùng như URI sẽ sử dụng vị trí mới.

+0

Không có quyền truy cập vào máy chủ/máy chủ không may – deterb

+0

@deterb Ý của bạn là "không có quyền truy cập? Nên có tệp tương đương với tệp máy chủ bất kể bạn đang chạy hệ điều hành nào: http: //en.wikipedia .org/wiki/Hosts_% 28file% 29 # Location_in_the_file_system – IQAndreas

1

Phương pháp này được lấy cảm hứng từ câu trả lời của @Mark Stickley. Nó hoạt động ngay cả khi bạn có hai số cổng khác nhau (không chỉ tên máy chủ) để truy cập cùng một máy từ hai vị trí khác nhau.

Bạn có thể giữ nhiều phiên bản ~/.ssh/config tùy thuộc vào số lượng tình huống.

Ví dụ: trong trường hợp của tôi ở nhà, tôi truy cập máy chủ của mình với tên máy chủ là my-fancy-server và cổng là 22. Tại văn phòng, tên máy chủ là my-dyndns-name và tên cổng là XXX.

Vì vậy, tôi có hai phiên bản ~/.ssh/config. Ở nhà, nó nói:

Host home 
    my-fancy-server 
    Port 22 
    User abhishek 
    IdentityFile /home/abhishek/.ssh/id_rsa 

(. Xin vui lòng điều chỉnh ông hai giá trị cuối cùng phù Người cuối cùng là không cần thiết nếu bạn không sử dụng các phím) Tại văn phòng, nó nói

Host home 
    my-dyndns-name 
    Port XXX 
    User abhishek 
    IdentityFile /home/abhishek/.ssh/id_rsa 

Tôi có một tập lệnh điều chỉnh nội dung của ~/.ssh/config khi tôi chuyển đến một vị trí mới. Người ta có thể tự động hóa ngay cả điều này bằng cách viết một kịch bản được kích hoạt bởi những thay đổi trong mạng.

Tôi chỉ có một từ xa trong tập tin cấu hình git của tôi trông giống như

[remote "origin"] 
    url = home:/path/to/repo 
    fetch = +refs/heads/*:refs/remotes/origin/* 

EDIT: Tôi chỉ phát hiện ra rằng tôi không cần phải làm tất cả điều này. Tôi chỉ kích hoạt loopback nat trên router của tôi và bây giờ tôi có thể truy cập thống nhất máy tính của tôi bằng cách sử dụng tên/cổng bên ngoài. Tuy nhiên, trong nhiều trường hợp, như mạng công ty, việc rối tung với bộ định tuyến có thể không phải là tùy chọn

Các vấn đề liên quan