Git을 사용하여 원격 저장소에 초기 푸시를 어떻게 수행합니까?


173

나는 수많은 튜토리얼을 읽었으며 계속해서 짧게 나옵니다. 내가 가진 것은 다음과 같습니다.

-Windows 데스크톱에서 RubyMine을 실행하고 있습니다.- 지침에
따라 WebFaction 호스팅 계정에 Git을 설치했습니다-Git이 두 컴퓨터에서 모두 제대로 작동하는 것 같습니다

내가하고있는 일은 다음과 같습니다.
1. 서버에서 :
         a. mkdir 프로젝트
         b. 자식 초기화
         c. git add.
         디. git commit <--- "nothing to commit"
2
         . 클라이언트에서 : a. RubyMine에서 새 프로젝트를 작성하십시오.
         비. 프로젝트의 최상위 디렉토리에있는 "git init"
         c. "변경 사항을 푸시하십시오"서버 <---- "일부 참조를 푸시하지 못했습니다 ..."

어떤 단계를 놓치고 있습니까?

답변:


393

서버에서 :

mkdir my_project.git
cd my_project.git
git --bare init

클라이언트에서 :

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

원점을 추가 할 때 사용할 수있는 몇 가지 형식과 스키마가 있습니다. 귀하의 호스팅 서비스가 제공하는 것을 참조하십시오.


RubyMine에서 작업 한 이후로 변경 한 유일한 것은 touch .gitignore를 66 개의 기본 파일로 rails 프로젝트를 만드는 것으로 교체 한 것입니다. 대단히 감사합니다!
Donald Hughes

명령을 나열하는 데 도움이됩니다. 이것이 내가 원격 저장소를 설정 한 방법입니다.
Dave Bacher

5
이 리포지토리에서 다른 사람들이 나와 공동 작업 --shared을하려면 git --bare init명령 의 끝에 추가해야한다고 덧붙여 야합니다 . 필요한 권한이 설정됩니다.
Josh Lindsey

이 답변에 감사드립니다. git에 관한 훌륭한 책에서 누락 된 내용을 채우는 것과 같은 것들을 갖는 것이 매우 도움이되지만 여전히 CVS의 많은 변환 작업은 다루지 않습니다.
octopusgrabbus

21
나는 처음 git push --set-upstream origin master대신 달리기 를 좋아합니다 git push origin master. 이렇게하면 매번 git push또는 git pull대신 입력 할 수 있습니다 git push origin master. 취향에 맞는 것
Rick Smith

8

당신은 이것을 시도 할 수 있습니다 :

서버에서 :

/etc/group좋아요에 새 그룹 추가 (예)

mygroup:1001:michael,nir

새로운 자식 저장소를 만듭니다.

mkdir /srv/git
cd /srv/git
mkdir project_dir
cd project_dir
git --bare init (initial git repository )
chgrp -R mygroup objects/ refs/ (change owner of directory )
chmod -R g+w objects/ refs/ (give permission write)

클라이언트에서 :

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

(클라이언트 측의 Josh Lindsey에게 감사합니다)

클라이언트 다음에 서버에서 다음 명령을 수행하십시오.

cd /srv/git/project_dir
chmod -R g+w objects/ refs/

git pull 후이 오류가 발생하면 :

There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details

git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream new origin/<branch>

시험:

git push -u origin master

유용 할거야.


5

커밋하기 전에 저장소에 파일하나 이상 추가해야합니다 ( 예 :) .gitignore.


내가 그것을 사용하려고하는 방식은 코드를 작성하는 곳이기 때문에 클라이언트에서 처음에 파일을 추가하는 것입니다. git에서 개념적으로 벗어 났습니까? 먼저 클라이언트를 커밋 한 다음 서버로 푸시해야합니까?
Donald Hughes

5

프로젝트에 업스트림 분기가없는 경우, 즉 원격 저장소가 로컬 저장소에서 작성된 분기에 대해 처음 알게되는 경우 다음 명령이 작동해야합니다.

git push --set-upstream origin <branch-name>

3

@Josh Lindsey는 이미 완벽하게 대답했습니다. 그러나 종종 ssh를 사용하기 때문에 정보를 추가하고 싶습니다.

따라서 변경하십시오.

git remote add origin youruser@yourserver.com:/path/to/my_project.git

에:

git remote add origin ssh://youruser@yourserver.com/path/to/my_project

도메인과 경로 사이의 콜론은 더 이상 존재하지 않습니다.


1

클라이언트에서 원격 저장소를 설정해야합니다.

git remote add origin ssh://myserver.com/path/to/project

이 명령을 실행했지만 "git push origin master"는 여전히 "일부 참조를 푸시하지 못했습니다"라는 결과를 가져옵니다. "git pull origin master"를 시도하고 "원격 심판 마스터를 찾을 수 없습니다"라는 메시지를 받았습니다.
Donald Hughes

차이가 있는지 확실하지 않지만 git --bare init@Josh Lindsey가 권장 하는 것처럼 원격 리포지토리가 만들어집니다 .
Dave Bacher

같은 문제가 있었는데 "일부 참조를 푸시하지 못했습니다."리포지토리에서 마스터 브랜치를 푸시하려고 시도했지만 소스에 마스터 브랜치가 없다는 것을 알았습니다. 지점을 확인하십시오. 밀어 넣기 존재 :)
Datum Geek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.