2011-07-07 8 views
3

がローカルに正常に動作しているようだ設定とのgitでの作業:私は中央リポジトリにpushにこれをしようとするとgit 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 

問題が始まる:

~/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 

注:上記--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

あなたがやったとき:

git clone /home/temp-repo/ 

を私が正しくあなたの質問を理解していた場合、あなたは今、新しいディレクトリ〜/ SB/PROJ1/TEMP-レポ/

にレポのクローンを持っている必要がありますそれはあなたが望むものではありません。

すでに〜/ sb/proj1にリポジトリがある場合は、他のリポジトリをクローンしないでください。他のものをリモコンとして追加するだけです。

だから、あなたは〜/ SB/PROJ1で最初のローカルレポを作成し、一時-レポを作成し、あなたは秒に最初からプッシュすると仮定すると:

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

それとも、それを他の操作を行います道の周りに。最初に/ home/temp-repoのrepoを作成し、それをクローンしてそれを押します。

希望しますか?

編集うまくいけば、ここではクローンをしたくなかったん理由を説明する

クローンはすでにローカルリポジトリを作成していない場合です。そこで、gitにいくつかのリモートリポジトリをコピーするように依頼しています。リモートリポジトリは、新しいローカルコピーに「origin」と呼ばれるリモートとして暗黙的に設定します。あなたのケースでは、すでにローカルリポジトリを持っていたので、他のリポジトリを「原点」と呼ばれるリモートとして設定します。

これでローカルリポジトリは「起点」と呼ばれる別のレポを認識しました。そして、あなたはその「起源」に押し込むことができます。あなたはもちろん、それを「起源」と呼ぶ必要はありません。あなたが好きなら、それを「猫」と呼ぶことができます。

またはそれ以外の方法で行うことができます。だから、あなたは一時レポを最初に作ってから、次のようなことをすることができます:

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

それも機能します。これは、新しいディレクトリproj2内の新しいrepoにtemp-repoをコピーします。次にproj2では、新しいリポジトリが 'origin'(/ home/temp-repo)というリモートリポジトリを認識しているので、コミットをそれに戻すことができます。

+0

ありがとうございました! +1。上記の私の更新を参照してください。 – WinWin

関連する問題