2011-08-17 9 views
0

gitに追加したリモートサーバ上にフォルダがあります。サーバにプッシュするときのGitエラー

git init 
git add . 
git commit -m "Initial commit" 

次に、ローカルのMacBookにリポジトリをプルダウンします。次に、index.jsファイルを追加し、gitに追加してコミットします。問題は、私がサーバーに変更されたrepoをプッシュしようとするときに来る。私は狂ったエラーを取得しています:

Refusing to update checked out branch: refs/heads/master By default, updating the current branch in a non-bare repository is denied, because it will make the index and work tree inconsistent with what you pushed, and will require 'git reset --hard' to match the work tree to HEAD.

アイデアはありますか?

+0

プッシュにはどのようなコマンドを使用していますか? – sbrichards

+0

私はGUIツールSoureTreeを使用しています。コマンドは次のとおりです:git push -v --tags origin master:master – Justin

+0

git push -u origin masterを実行している端末から試してください – sbrichards

答えて

0

あなたがプッシュする予定のリモートリポジトリは、--bareオプションで初期化して、Gitが作業ディレクトリを作成しないようにする必要があります。これを行う最も簡単な方法は、新しい裸のレポを初期化し、新しい場所(.gitで終わるフォルダにする必要があります)を指すようにMacBookのリモコンを更新して押します。

+0

したがって、サーバには基本的にいくつかのファイルがありますが、デフォルトでは無視されます。あなたは基本的にちょっとしたinitをして、サーバー上でaddとcommitをしないと言っていますか? – Justin

+0

正しい - リポジトリは、初めてプッシュするときに最初のコミットを取得します。 – dahlbyk

0

これは、ベア以外のリポジトリ(作業ディレクトリを持つリポジトリ)にプッシュしようとしているために発生します。作業ディレクトリは、本質的にあなたがチェックアウトして編集するファイルが存在する場所です。非裸のレポにプッシュすると、エラーメッセージに記載されている状況が発生します。

これには単純な解決策ですが、まだMacBookとリモートサーバーの両方からファイルを編集する場合は、git init --bareで3番目のレポを作成します。あなたは他の2つのレポからこのレポにプッシュして引っ張ることができます。

+0

リポジトリは元々サーバー上に作成されていますが、これは自動化されていますが、編集はmacbookで行われます。これには解決策がありますか?私はサーバー上でgit --bare initを試しましたが、まだエラーが発生しています。 – Justin

+0

サーバ上のリポジトリに作業ディレクトリが必要ですか? – Andy

関連する問題