당신은 여기에 URL을보고하지 않습니다 - 당신은 여전히 사용하고 있는지 유사한 RSH / RCP 스타일의 주소에서 찾고 scp
과 rsync
요즘. 따라서 rsh 구문은 URL과 다릅니다 . 콜론 뒤의 모든 것은 디렉토리 경로이며 포트 지정에 대한 규정은 없습니다.
git
in git@...
이 서버의 Unix 사용자 이름이고 github.com
호스트 이름 이라는 것이 여전히 옳습니다 . 아마도 이것이 rsh 스타일 주소 에서 URL을 상속받은 것으로 생각 됩니다.
(원래의 rsh는 요즘 보안 모델이 비정상적이었고 다른 포트를 사용할 수 없었습니다. ssh는 별도의 명령 줄 옵션 -p
을 사용하여 필요할 경우 변경합니다.)
따라서 전체 JohnCoates/Aerial.git
는 디렉토리 경로입니다. 왜로 시작하지 /
않습니까? 우선, 이것은 URL 형식의 주소가 아니며 :
필드 구분자로 사용 되기 때문입니다. 둘째, 서버는 경로에 선행 슬래시가 필요하지 않기 때문입니다.
일반 Unix SSH 서버에서 :
경로는 시작하지 않아도 /
이 때 상대 의 현재 디렉토리로 이동합니다. Git 주소에서 이는 사용자의 홈 디렉토리와 관련이 있음을 의미합니다 .
RSH / SSH는 시스템 계정 에 로그인하기위한 것이기 때문에 로컬 로그인과 동일한 "홈 디렉토리"개념을 가지고 있습니다. 시스템에 로그인 할 때 명령은 /home/UserName
(다른 곳에서 cd 할 때까지) 시작 하므로 실행은와 ls Projects
동일합니다 ls /home/UserName/Projects
.
SFTP, Git 및 Rsync를 포함하여 SSH 전송을 사용하는 모든 소프트웨어도이 기능을 사용할 수 있습니다. 예를 들어, 주소를 사용하여 간단한 SSH 서버에서 복제를 시도한 경우 fred@example.com:Projects/App.git
이는 복제와 동일합니다 fred@example.com:/home/fred/Projects/App.git
.
(아시다시피, 절대 경로는 /
–로 시작 하지만 여전히:
rcp 주소를 사용하여 분리됩니다 .)
GitHub, GitLab 및 기타 사용자 정의 시스템에서 :
GitHub는 저장소 이름을 파일 시스템 경로에 직접 매핑하지 않는 사용자 지정 git을 실행합니다. 대신, 정규식과 같은 수신 경로를 수동으로 구문 분석하고 ^/?(.+)/(.+)\.git$
SQL 데이터베이스에서 결과를 찾습니다.
따라서 GitHub "path"는 실제로 일반적인 경로 규칙을 따를 필요가없는 커스텀 문자열입니다. 그 중 하나 예를 들어, GitHub의 함께 두 경로를 수용 하고 아래의 URL의 예에서 볼 수 있듯이 최고의 슬래시없이.
즉, Git 은 URL 스타일 주소 도 지원합니다. 예제는 다음과 같이 쓸 수도 있습니다.
ssh://git@github.com/JohnCoates/Aerial.git
이제 경로는 /JohnCoates/Aerial.git
예상대로입니다 (URL에서는 항상 절대적입니다).
경로는 다르지만 GitHub는 여전히 동일한 방식을 허용하지만 표준 Unix 서버는 그렇지 않습니다. (그것은 것입니다 필요로 지정해야, 홈 디렉토리로, 전체 경로를.) 내 이전 예제를 계속하려면 :
fred@example.com:/home/fred/Projects/App.git
↓
ssh://fred@example.com/home/fred/Projects/App.git