내 로컬 Git 저장소를 원격 Git 저장소로 이동하려면 어떻게해야합니까?
내 로컬 컴퓨터에 다양한 Git 프로젝트가 있습니다. 원격 Git 리포지토리로 사용하고 싶은 서버가 있습니다. 기록을 그대로 유지하면서 로컬 Git 리포지토리 (프로젝트)를 서버로 이동하려면 어떻게해야합니까?
감사!
편집 : 모든 훌륭한 답변에 감사드립니다. 내가 선택한 응답은 제한된 GIT 지식에 적합합니다.
편집 # 2 : 원래 답변 선택이 내 태그를 복사하지 않은 것으로 나타났습니다. git push --mirror <path>태그를 복사합니다.
서버에서 베어 저장소로 git 저장소를 작성하십시오.
git init --bare repo.git
그런 다음 로컬 저장소의 커밋을 푸시합니다.
git push --mirror ssh://yourserver/~/repo.git
먼저 서버에 git 저장소를 만듭니다.
git init --bare /path/to/repo
그런 다음 원격 저장소를 로컬 저장소 (ssh : // 또는 https : //)에 추가하십시오.
git remote add origin ssh://server/path/to/repo
그리고 푸시 파일 / 커밋
git push origin master
마지막으로 푸시 태그
git push origin --tags
Ralf Wernders 블로그 에 좋은 튜토리얼이 있습니다 . 서버에서 저장소를 만드는 방법을 알고 있거나 이미 완료되었다고 가정합니다.
git remote add <remote> <url>
로컬 저장소에 원격을 추가하려면. <remote>원격지의 이름입니다 (종종 "원본"). <url>쓰기 권한이있는 저장소의 URL입니다 (예 : git @ ...)
git push <remote> <branch>
커밋을 오리진으로 이동합니다. <branch>당신이 밀고있는 브랜치 (종종 "마스터")입니다.
서버에 git 저장소를 만들고 (gitolite / gitosis 또는 일반 사용자 계정 + pubkey ssh auth를 사용할 수 있음) 다음을 사용하여 서버를 로컬 git 저장소에 추가합니다.
git remote add name url
사용하십시오 git push -u name master( -u현재 분기를 추적으로 표시하므로 git pull대신 할 수 있습니다 git pull name master).
서버 측 (데비안 기반 시스템) :
adduser --system --home /home/git --bash /bin/bash git
su - git
mkdir .ssh
cat yourkey.pub > .ssh/authorized_keys
이제 다음을 사용하여 각 로컬 저장소에 대한 새로운 베어 저장소를 만듭니다.
mkdir projectName
cd projectName
git init --bare
그 후 URL은 git@yourserver:projectName.
일반 (예 : 베어 아님) 저장소를 원한다면 복사하십시오. 특별히해야 할 일은 없습니다.
서버에서 베어 리포지토리를 사용하려면 서버에서 초기화하고 "로컬"복사본에 원격으로 추가 한 다음 푸시하면됩니다. ( git push --mirror모든 것을 통과합니다.)
원격을 추가하려는 독립형 로컬 작업 트리 저장소 (내부에 ".git"폴더가있는 폴더)가있는 경우 :
- 원격에 새 빈 저장소를 만듭니다.
로컬 저장소에서 새 원격을 원본으로 설정합니다.
cd localrepo
git remote add origin REMOTEURL # (verify with git remote -v)
모든 로컬 분기를 원격으로 푸시하고 해당 원격 분기를 추적하도록 각 로컬 분기를 설정합니다.
git push --all --set-upstream origin # (verify with git branch -vv)
모든 로컬 태그를 원격으로 푸시합니다.
git push --tags origin
이 시점에서 로컬 저장소는 원격에서 복제 된 것처럼 작동합니다.
원격 저장소에 복사하려는 베어 로컬 저장소 (이름이 .git로 끝나는 폴더)가있는 경우 :
- 원격에 새 빈 저장소를 만듭니다.
로컬 저장소에서 모든 분기를 원격으로 푸시합니다.
cd localrepo.git
git push --all REMOTEURL
모든 로컬 태그를 원격으로 푸시합니다.
git push --tags REMOTEURL
아마도 이것은 "거꾸로"일지 모르지만 나는 항상
git clone --bare localrepo localrepo.git
scp -r localrepo.git remoteserver:/pathTo
mv localrepo localrepo-prev
git clone remoteserver:/pathTo/localrepo
새 저장소가 괜찮다는 것을 증명하고 git status / log 등으로 기분이 나아졌습니다.
버전 제어를받지 않는 파일을 -prev에서 새 localrepo로 이동
rm -rf localrepo.git localrepo-prev
커밋 로그가있는 로컬 저장소가 있습니다. 모든 커밋 로그가 보존 된 새 github 원격 저장소에 추가하고 싶었습니다. 방법은 다음과 같습니다.
create the remote repo on the github. And get the the repo URL from the "Clone or Download" green button, such as https://github.com/mhisoft/eVault.git
If the local repo was attached to an old orgin. remove it first
git remote remove origin
Add the existing repository from the command line
git remote add origin https://github.com/mhisoft/eVault.git
git push -u origin master
'program story' 카테고리의 다른 글
| 자바 스크립트에서 날짜가 같은지 확인 (0) | 2020.11.30 |
|---|---|
| 국소 최댓값과 최솟값 찾기 (0) | 2020.11.30 |
| ALTER TABLE ADD COLUMN은 시간이 오래 걸립니다. (0) | 2020.11.29 |
| FrameLayout은 무엇을합니까? (0) | 2020.11.29 |
| JavaScript에서 문자열 이스케이프 (0) | 2020.11.29 |