여기에 (같은 질문으로) 도착한 후에는 아무것도 사용하지 않고 완전히 사용할 수있는 원격 (맨손) 저장소로 이동하는 데 필요한 모든 단계를 실제로 설명하지 않기 때문에이 답변을 추가하고 있습니다.
참고 :이 예제는 베어 리포지토리의 위치에 로컬 경로를 사용하지만 OP로 표시된 SSH와 같은 다른 git 프로토콜은 정상적으로 작동합니다.
git에 익숙하지 않은 사람들을 위해 메모를 추가하려고했습니다.
1. 베어 리포지토리 초기화 ...
> git init --bare /path/to/bare/repo.git
Initialised empty Git repository in /path/to/bare/repo.git/
이것은 폴더 (repo.git)를 생성하고 git repo를 나타내는 git 파일로 폴더를 채 웁니다. 서있는 것처럼,이 레포는 쓸모가 없습니다. 커밋이없고 더 중요하게 는 가지가 없습니다 . 이 저장소를 복제 할 수는 있지만 끌어낼 수는 없습니다.
다음으로 작업 폴더를 만들어야합니다. 기존 파일이 있는지 여부에 따라이 작업을 수행하는 몇 가지 방법이 있습니다.
2a. 빈 저장소를 복제하여 새 작업 폴더 (기존 파일 없음)를 만듭니다.
git clone /path/to/bare/repo.git /path/to/work
Cloning into '/path/to/work'...
warning: You appear to have cloned an empty repository.
done.
이 명령은 /path/to/work존재하지 않거나 빈 폴더 인 경우에만 작동 합니다. 경고에 유의하십시오.이 단계에서는 여전히 유용한 정보가 없습니다. 당신이 cd /path/to/work실행 하면 다음 과 git status같은 것을 얻을 수 있습니다 :
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
그러나 이것은 거짓말입니다. 당신은 실제로 분기에 있지 않습니다 master( git branch아무것도 반환하지 않기 때문에 ). 지금까지는 커밋이 없습니다.
다음으로 작업 폴더에 일부 파일을 복사 / 이동 / 만들고 git에 추가하고 첫 번째 커밋을 만듭니다.
> cd /path/to/work
> echo 123 > afile.txt
> git add .
> git config --local user.name adelphus
> git config --local user.email adelphus@example.com
> git commit -m "added afile"
[master (root-commit) 614ab02] added afile
1 file changed, 1 insertion(+)
create mode 100644 afile.txt
git config당신은 이미 당신이 자식에게하지 않은 경우 명령에만 필요합니다. 지금 실행하는 경우주의 git branch, 당신은 이제 볼 수 있습니다 master목록에 지점을. 이제 실행하십시오 git status:
On branch master
Your branch is based on 'origin/master', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
nothing to commit, working directory clean
이것은 또한 오해의 소지가 있습니다. 업스트림이 "사라지지"않았습니다 git branch --unset-upstream. 아직 생성되지 않았 으므로 도움이되지 않습니다. 그러나 이제는 첫 번째 커밋이 완료되었으므로 맨손으로 리포지토리에서 푸시하고 마스터 할 수 있습니다.
> git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /path/to/bare/repo.git
* [new branch] master -> master
이 시점에서 마스터 브랜치의 다른 곳에서 복제 할 수있는 완전 기능적인 베어 리포지토리와 끌어 올릴 수있는 로컬 작업 복사본이 있습니다.
> git pull
Already up-to-date.
> git push origin master
Everything up-to-date
2b. 기존 파일에서 작업 폴더 만들기 파일
이 들어있는 폴더가 이미있는 경우 (복제 할 수 없음) 새 자식 저장소를 초기화하고 첫 번째 커밋을 추가 한 다음 나중에 해당 저장소에 연결할 수 있습니다.
> cd /path/to/work_with_stuff
> git init
Initialised empty Git repository in /path/to/work_with_stuff
> git add .
# add git config stuff if needed
> git commit -m "added stuff"
[master (root-commit) 614ab02] added stuff
20 files changed, 1431 insertions(+)
create mode 100644 stuff.txt
...
이 시점에서 우리는 첫 번째 커밋과 로컬 마스터 브랜치를 가지고 있으며, 원격 마스터 업스트림 브랜치로 전환해야합니다.
> git remote add origin /path/to/bare/repo.git
> git push -u origin master
Counting objects: 31, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (31/31), done.
Writing objects: 100% (31/31), 43.23 KiB | 0 bytes/s, done.
Total 31 (delta 11), reused 0 (delta 0)
To /path/to/bare/repo.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
-ugit 푸시 의 플래그가 (새로운) 추적 된 업스트림 브랜치를 설정하도록합니다. 이전과 마찬가지로 이제 마스터 브랜치의 다른 곳에서 복제 할 수있는 완전히 작동하는 베어 리포지토리와 끌어 올릴 수있는 로컬 작업 복사본이 있습니다.
이 모든 것이 어떤 사람들에게는 명백해 보일지 모르지만 git은 최선을 다해 혼란스러워합니다 (오류 및 상태 메시지는 실제로 약간의 재 작업이 필요합니다)-희망이 있으면 다른 사람들을 도울 것입니다.
--shared옵션을 추가 할 수도 있습니다init. 자동으로 저장소에 그룹 쓰기 권한을 추가합니다.- link