source

로컬 Git 저장소에서 원격 Git 저장소를 만드는 방법은 무엇입니까?

manysource 2023. 6. 4. 10:37

로컬 Git 저장소에서 원격 Git 저장소를 만드는 방법은 무엇입니까?

로컬 Git 저장소가 있습니다.원격의 ssh 지원 서버에서 사용할 수 있게 하고 싶습니다.이거 어떻게 하는 거지?

맨 합니다.git init --bare 푸시/가합래로커토을포컬지슬(▁for▁add다▁the니추원▁as가▁tracker합/▁the▁reposgit remote add origin URL), 그리고 당신은 지역적으로 방금 말했습니다.git push origin master 다른 는 "" "" "" "" " ""를 사용할 수 있습니다.pull원격 저장소에서.

Git 서버를 처음 설정하려면 기존 리포지토리를 작업 디렉터리가 포함되지 않은 새 기본 리포지토리로 내보내야 합니다.이 작업은 일반적으로 간단합니다.하여 새 저장소를 하여 clone 명령을 합니다.--bare 으로 일적로반으기저디렉다같끝는음다이납니과리터장본소선택다끝납..git 예:

$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/

이 명령어는 작업 디렉토리 없이 Git 저장소를 자체적으로 가져와 해당 저장소 전용 디렉토리를 만듭니다.

이제 저장소의 복사본만 있으면 서버에 저장하고 프로토콜을 설정할 수 있습니다.다음서설다가보정다겠니습해라는 서버를 git.example.com수 있으며 를 SSH 에 /opt/git디렉토리입니다.기본 리포지토리를 다음 위치에 복사하여 새 리포지토리를 설정할 수 있습니다.

$ scp -r my_project.git user@git.example.com:/opt/git

에서 동일한 권한을 는 "", "SSH"에 권한을 가지고 ./opt/git를 실행하여 할 수 .

$ git clone user@git.example.com:/opt/git/my_project.git

하고 SSH에 있는 /opt/git/my_project.git디렉토리에 자동으로 푸시 액세스 권한이 부여됩니다. init 합니다.--shared선택.

$ ssh user@git.example.com
$ cd /opt/git/my_project.git
$ git init --bare --shared

Git 저장소를 가져와 기본 버전을 만든 후 사용자와 공동작업자가 SSH 액세스 권한을 가진 서버에 배치하는 것은 매우 쉽습니다.이제 동일한 프로젝트에서 협업할 준비가 되었습니다.

위의 두 가지 일반적인 솔루션 사이에는 흥미로운 차이가 있습니다.

  1. 다음과 같이 맨 저장소를 생성하는 경우

    cd/cd_of_any_repomkdir my_remote.gitcd my_remote.gitgit in in --get.

그리고 나서.

cd  /your_path/original_repo
git remote add origin /outside_of_any_repo/my_remote.git
git push --set-upstream origin master

그런 다음 git는 다음 관계로 'original_repo'에 구성을 설정합니다.

original_repo origin --> /outside_of_any_repo/my_remote.git/

후자를 업스트림 리모컨으로 사용합니다.그리고 업스트림 리모컨에는 다른 리모컨이 없습니다.

  1. 그러나 반대로 할 경우:

    (directory original_repo 디렉토리에서)cd..git clone --delay original_repo/delay_of_any_repo/my_remote.git

그런 다음 'my_remote.git'은 구성이 'original_repo'를 원격으로 가리키는 'syslog'로 종료되고, remote.dll은 로컬 디렉토리 경로와 동일하며, 서버로 이동하는 경우에는 적합하지 않을 수 있습니다.

"원격" 참조가 적절하지 않은 경우 나중에 제거하기 쉽지만, 여전히 'original_repo'는 업스트림 원격(또는 공유할 위치)으로 'my_remote.git'을 가리키도록 설정해야 합니다.따라서 기술적으로 #2 접근법으로 몇 단계 더 진행해도 동일한 결과를 얻을 수 있습니다.그러나 #1은 더 적은 단계로 서버로 이동하는 데 적합한 로컬 저장소에서 시작하는 "중앙 베어 공유 저장소"를 만드는 데 더 직접적인 접근 방식인 것 같습니다.원격 레포가 수행할 역할에 따라 다르다고 생각합니다. (그렇습니다. 이는 여기에 나와 있는 문서와 상충됩니다.)

주의: 실제 레포를 사용하여 로컬 시스템에서 테스트를 수행한 다음 결과를 파일별로 비교하여 위의 내용(2019년 8월 초 이 글에서)을 배웠습니다.하지만! 저는 아직 배우는 중이기 때문에 더 정확한 방법이 있을 수 있습니다.하지만 제 테스트는 1번이 현재 선호하는 방법이라는 결론을 내리는 데 도움이 되었습니다.

Windows에서 로컬 복사본을 만든 사용자와 Unix 라인 시스템에 해당하는 원격 저장소를 생성하려는 사용자를 위한 참고 사항입니다. 여기서 텍스트 파일은 Unix와 유사한 시스템의 개발자에 의해 추가 클론에 대해 LF 끝을 가져오지만 Windows에서는 CRLF 끝을 가져옵니다.

변환을 설정하기 전에 Windows 리포지토리를 만든 경우 문제가 발생합니다.Git의 기본 설정은 변환 없음이므로 작업 세트는 CRLF를 사용하지만 저장소(즉, .git에 저장된 데이터)도 파일을 CRLF로 저장합니다.

원격으로 푸시하면 저장된 파일이 그대로 복사되고 종료 변환이 수행되지 않습니다. (라인 종료 변환은 파일이 저장소에 커밋될 때 발생하며 저장소를 푸시할 때는 발생하지 않습니다.)결국 원하는 것이 아닌 유닉스 계열 저장소에 CRLF가 생성됩니다.

원격 리포지토리에서 LF를 가져오려면 먼저 Windows 리포지토리를 다시 표준화하여 LF가 로컬 리포지토리에 있는지 확인해야 합니다.이렇게 해도 CRLF 끝이 남아 있는 Windows 작업 세트에는 가시적인 영향을 미치지 않지만 원격으로 푸시하면 원격에서 LF가 올바르게 표시됩니다.

Windows 저장소에 어떤 줄 끝이 있는지 쉽게 알 수 있는 방법이 있는지 모르겠습니다. 코어를 설정하여 테스트할 수 있을 것 같습니다.autocolf=false 다음 복제(repo에 LF 끝이 있는 경우 클론에도 LF가 있습니다).

원격 리포지토리는 일반적으로 기본 리포지토리, 즉 작업 디렉터리가 없는 Git 리포지토리입니다.저장소는 협업 지점으로만 사용되므로 Disk에서 스냅샷을 체크아웃할 필요가 없습니다. 단지 Git 데이터일 뿐입니다.간단히 말해 맨 저장소는 프로젝트의 .git 디렉터리 내용일 뿐 다른 내용은 없습니다.

다음 코드를 사용하여 baregit 저장소를 만들 수 있습니다.

$ git clone --bare /path/to/project project.git

원격 Git 저장소를 사용하는 한 가지 옵션은 SSH 프로토콜을 사용하는 것입니다.

자가 호스팅이 SSH를 통해 실행되는 경우 Git에 대한 공통 전송 프로토콜입니다.이는 서버에 대한 SSH 액세스가 이미 대부분의 장소에 설정되어 있기 때문입니다. 그렇지 않다면 쉽게 할 수 있습니다. SSH는 인증된 네트워크 프로토콜이기도 하며 어디서나 사용할 수 있기 때문에 일반적으로 설정 및 사용이 쉽습니다.

SSH를하려면 SSH " " " " " " " " " " 을 할 수 .ssh://다음과 같은 URL:

$ git clone ssh://[user@]server/project.git

또는 SSH 프로토콜에 대해 더 짧은 scp 유사 구문을 사용할 수 있습니다.

$ git clone [user@]server:project.git

위의 두 경우 모두 선택적인 사용자 이름을 지정하지 않으면 Git는 현재 로그인한 사용자로 가정합니다.

더 프로스

SSH를 사용하는 것의 장점은 많습니다.첫째, SSH 데몬은 비교적 쉽게 설정할 수 있습니다. SSH 데몬은 일반적이며, 많은 네트워크 관리자가 이 데몬에 대한 경험이 있으며, 많은 OS 배포가 이 데몬과 함께 설정되거나 이를 관리하기 위한 툴을 갖추고 있습니다.다음으로 SSH를 통한 액세스는 안전합니다. 모든 데이터 전송은 암호화되고 인증됩니다.마지막으로 HTTPS, Git 및 Local 프로토콜과 마찬가지로 SSH는 효율적이며 전송하기 전에 데이터를 최대한 압축합니다.

콘스

SSH의 부정적인 측면은 Git 저장소에 대한 익명 액세스를 지원하지 않는다는 것입니다.SSH를 사용하는 경우 사람들이 읽기 전용 용량에서도 시스템에 대한 SSH 액세스 권한을 가지고 있어야 하므로 SSH는 단순히 저장소를 복제하여 검사하려는 오픈 소스 프로젝트에 도움이 되지 않습니다.회사 네트워크 내에서만 사용하는 경우 SSH가 유일한 프로토콜일 수 있습니다.프로젝트에 익명 읽기 전용 액세스를 허용하고 SSH를 사용하려면 다른 사용자가 가져올 수 있는 다른 SSH를 설정해야 합니다.

자세한 내용은 다음 참조를 참조하십시오.Git on the Server - 프로토콜

현재 코드 폴더에 있습니다.

git remote add origin http://yourdomain-of-git.com/project.git
git push --set-upstream origin master

그러면 검토 기준

git remote --v

원격 서버에 디렉토리를 작성해야 합니다.그런 다음 "git init" 명령을 사용하여 저장소로 설정합니다.이 작업은 새 프로젝트마다 수행해야 합니다(새 폴더마다).

당신이 이미 ssh 키를 사용하여 git를 설정하고 사용했다고 가정하면, 나는 작은 Python 스크립트를 작성했는데, 작업 디렉토리에서 실행되면 원격을 설정하고 디렉토리를 gitrepo로 초기화합니다.물론 스크립트를 한 번만 편집하여 모든 리포지토리의 서버 및 루트 경로를 알려주어야 합니다.

여기를 확인하세요 - https://github.com/skbobade/ocgi

나는 공개 키를 통해 ssh를 통해 액세스할 수 있는 라즈베리를 가지고 있습니다(비밀번호 프롬프트 없음).

내가 한 라즈베리에

mkdir -p /home/pi/my/repo
cd /home/pi/my/repo
git init --bare

노트북으로 했습니다.

git clone  ssh://pi@raspberry/home/pi/my/repo
cd myrepo
touch README.md
git add README.md
git commit -m "First commit"
git push

그게 다였다.

일반적으로 당신은 Git repo를 단지 사용하여 설정할 수 있습니다.init지휘권

git init

사용자의 경우 이미 원격에서 사용할 수 있는 권한이 있습니다.원격 repo에 액세스하는 방법에 따라(url 내부의 사용자 이름 또는 확인을 처리하는 ssh 키 포함)clone명령:

git clone git@[my.url.com]:[git-repo-name].git

레포를 복제하는 다른 방법도 있습니다.이렇게 하면 컴퓨터에 저장소 풀링을 확인하는 SSH 키 설정이 있는 경우 이를 호출할 수 있습니다.원격 저장소에 로그인하기 위해 내부에 암호와 사용자 이름을 포함하려는 경우 URL의 다른 조합이 있습니다.

언급URL : https://stackoverflow.com/questions/6648995/how-to-create-a-remote-git-repository-from-a-local-one