2011-07-07 2 views
3

잘 작동하는 것 :git push가 실패합니다 - 내가 뭘 잘못하고 있니? 구성 및 자식 로컬 보인다 작업

~/sb/proj1> cd /home 
~> mkdir temp-repo 
~> cd temp-repo/ 
~/temp-repo> git init --bare 
Initialized empty Git repository in /home/temp-repo/ 
~/temp-repo> cd ~/sb/proj1/ 
~/sb/proj1> git clone /home/temp-repo/ 
Cloning into temp-repo... 
done. 
warning: You appear to have cloned an empty repository. 
~/sb/proj1> git push origin master 
fatal: 'origin' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly 

참고 : 나는 중앙 저장소에 push이하려고 할 때

~/sb> mkdir proj1 
~/sb> cd proj1 
~/sb/proj1> echo "asdf" > file1.txt 
~/sb/proj1> git init 
~/sb/proj1> git add . 
~/sb/proj1> git commit -a -m "Import" 
~/sb/proj1> git branch 
* master 

문제는 시작하는 --bareorigin master 위에 있었다 여기에 게시 된 문제의 해결책에서 가져온 것 : pushing to a git repository does not work

그러나 나는 실종 된 것을 알아 내지 못합니다. 사소한 것이어야하지만 그게 뭐야?

UPDATE : @Firoze Lafeer에 의해 답은 아래에 작동합니다

~/sb/proj1> cd /home 
~> mkdir temp-repo 
~> cd temp-repo/ 
~/temp-repo> git init --bare 
Initialized empty Git repository in /home/temp-repo/ 
~/temp-repo> cd ~/sb/proj1/ 
~/sb/proj1> git remote add origin /home/temp-repo 
~/sb/proj1> git push origin master 
Counting objects: 3, done. 
Writing objects: 100% (3/3), 230 bytes, done. 
Total 3 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (3/3), done. 
To /home/temp-repo 
* [new branch]  master -> master 
~/sb/proj1> 

이제 그 이유를 이해할 필요가있다. 특히 this answer에서 내가 오해 한 점은 앞에 git clone을 제안한 것입니다.

+0

** 베어 저장소 ** : '--bare' 옵션을 사용하여 복제 된 저장소는 .git 디렉토리 안에있는 파일/폴더 만 포함합니다. – WinWin

+0

** 비 - 베어 리 저장소 ** : 일반 복제본에는 체크 아웃 된 파일들로 작업 디렉토리 *. – WinWin

답변

6

당신은했을 때 : 당신은 지금 새로운 디렉토리 ~/SB /으로 Proj1/온도-REPO에 REPO의 복제를해야

git clone /home/temp-repo/ 

/

내가 제대로 질문을 이해 해요 경우 그건 네가 원하는 것이 아니야.

이미 ~/sb/proj1에 저장소가있는 경우 다른 저장소를 복제하지 마십시오. 다른 하나를 리모컨으로 추가하기 만하면됩니다.

그래서 당신을 가정하고 ~/SB /으로 Proj1에서 먼저 로컬 REPO를 생성 한 후 임시-REPO를 생성하고 두 번째로 처음부터 밀어 원하는 :

git remote add origin /home/temp-repo 
git push origin master 

를 또는 그것을 다른 단지를 할 길 주변에. 먼저/home/temp-repo에서 repo를 만든 다음 복제하여 밀어 넣으십시오.

희망 하시겠습니까?

편집 잘하면 더 여기 복제를 원하지 않았다 않는 이유를 설명

:

클론 이미 로컬 저장소를 작성하지 않은 경우입니다. 그래서 당신은 git에게 원격 저장소를 복사 해줄 것을 요구하고있다. 그러면 원격 저장소는 새로운 로컬 복사본에 'origin'이라는 원격 저장소로 암시 적으로 설정된다. 귀하의 경우에는 이미 로컬 저장소가 있으므로 원하는 저장소는 '저장소'라는 원격 저장소로 다른 저장소를 설정하는 것입니다.

이제 로컬 repo는 '원점'이라는 또 다른 repo를 인식합니다. 그리고 나서 당신은 그 '원점'으로 밀어 넣을 수 있습니다. 물론 '원산지'라고 부를 필요는 없지만 '고양이'라고 부를 수 있습니다. 그러면 'git push cats master'를 원한다면 사용할 수 있습니다.

또는 다른 방법으로 처리 할 수 ​​있습니다. 따라서 임시 리포 먼저 할 수 다음과 같은 일을 :

cd ~/sb 
git clone /home/temp-repo proj2 
cd proj2 
# make some changes... 
git push origin master 

그게 너무 작동합니다.그러면 temp-repo가 ​​새 디렉토리 인 proj2에 새 저장소로 복사됩니다. 그런 다음 proj2에서 새로운 저장소가 'origin'(/ home/temp-repo)이라는 원격 저장소를 인식하므로 커밋을 다시 원래대로 되돌릴 수 있습니다.

+0

감사합니다! +1. 위의 업데이트를 참조하십시오. – WinWin

관련 문제