GItHub ssh address에서 콜론 뒤의 이름은 무엇을 의미합니까? username in GitHub

예를 들어

git@github.com:JohnCoates/Aerial.git

이 명령에서, 나는 생각

git: username in GitHub Unix server
github.com: host name
/Aerial.git: directory

.

그래서 무엇 :JohnCoates입니까? 일반적으로 포트 번호는 있지만 JohnCoates포트 번호처럼 보이지 않습니다.

추신 : 나는이 대답을 찾았고 이것을 읽음 JohnCoates으로써 디렉토리의 일부처럼 보입니다. 그런데 왜 /없습니까?
https://stackoverflow.com/questions/5279624/whats-the-purpose-of-the-colon-in-this-git-repository-url



답변

당신은 여기에 URL을보고하지 않습니다 – 당신은 여전히 사용하고 있는지 유사한 RSH / RCP 스타일의 주소에서 찾고 scprsync요즘. 따라서 rsh 구문은 URL과 다릅니다 . 콜론 뒤의 모든 것은 디렉토리 경로이며 포트 지정에 대한 규정은 없습니다.

gitin 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


답변