Nếu đây là sự cố với tường lửa của bạn chặn cổng git: Protocol (9418), thì bạn nên thực hiện một thay đổi liên tục hơn để bạn không phải nhớ đưa ra các lệnh được đề xuất bởi các bài đăng khác cho mỗi repo git.
Giải pháp dưới đây cũng chỉ hoạt động đối với các mô hình con cũng có thể sử dụng giao thức git :.
Vì thông báo git không thực sự trỏ ngay đến cổng chặn tường lửa 9418, hãy thử chẩn đoán đây là sự cố thực tế.
Chẩn đoán vấn đề
Tài liệu tham khảo: https://superuser.com/q/621870/203918 và https://unix.stackexchange.com/q/11756/57414
Có một số công cụ chúng tôi có thể sử dụng để xác định xem tường lửa có gây ra sự cố hay không - sử dụng bất kỳ công cụ nào được cài đặt trên hệ thống của bạn.
# Using nmap
# A state of "filtered" against port 9418 (git) means
# that traffic is being filtered by a firewall
$ nmap github.com -p http,git
Starting Nmap 5.21 ( http://nmap.org ) at 2015-01-21 10:55 ACDT
Nmap scan report for github.com (192.30.252.131)
Host is up (0.24s latency).
PORT STATE SERVICE
80/tcp open http
9418/tcp filtered git
# Using Netcat:
# Returns 0 if the git protocol port IS NOT blocked
# Returns 1 if the git protocol port IS blocked
$ nc github.com 9418 < /dev/null; echo $?
1
# Using CURL
# Returns an exit code of (7) if the git protocol port IS blocked
# Returns no output if the git protocol port IS NOT blocked
$ curl http://github.com:9418
curl: (7) couldn't connect to host
OK, vậy bây giờ chúng tôi đã xác định đó là cổng git của chúng tôi bị chặn bởi tường lửa, chúng tôi có thể làm gì về nó? Đọc tiếp :)
Viết lại URL cơ bản
Git cung cấp một cách để viết lại URL bằng cách sử dụng git config
. Đơn giản chỉ cần ban hành lệnh sau:
git config --global url."https://".insteadOf git://
Bây giờ, như thể bằng phép thuật, tất cả các lệnh git sẽ thực hiện thay thế git://
chohttps://
Lệnh này đã tạo ra những thay đổi gì?
Hãy xem cấu hình toàn cầu của bạn bằng cách sử dụng:
git config --list
Bạn sẽ thấy dòng sau trong đầu ra:
url.https://.insteadof=git://
Bạn có thể thấy nó trông như thế nào trên tập tin, bằng cách xem qua ~/.gitconfig
nơi bạn sẽ thấy rằng hai dòng sau đã được thêm vào:
[url "https://"]
insteadOf = git://
Muốn kiểm soát nhiều hơn?
Chỉ cần sử dụng một URL đầy đủ / cụ thể hơn trong thay thế. Ví dụ: để chỉ có các URL GitHub sử dụng https: // thay vì git: //, bạn có thể sử dụng một cái gì đó như:
git config --global url."https://github".insteadOf git://github
Bạn có thể chạy lệnh này nhiều lần bằng các thay thế khác nhau. Tuy nhiên, trong trường hợp URL khớp với nhiều lần thay thế, trận đấu dài nhất sẽ "thắng". Chỉ một thay thế duy nhất sẽ được thực hiện cho mỗi URL.
Thay đổi toàn hệ thống cho Sysadmin
Nếu bạn là Linux Sysadmin và bạn không muốn người dùng của mình phải trải qua những khó khăn nêu trên, bạn có thể thực hiện thay đổi cấu hình git toàn hệ thống nhanh chóng.
Chỉ cần chỉnh sửa hoặc thêm các nội dung sau vào /etc/gitconfig
và voila, người dùng của bạn không phải lo lắng về bất kỳ điều nào ở trên:
[url "https://"]
insteadOf = git://