2017-01-17 10 views
0

リモートリポジトリのコードを更新しています。 何らかの理由により、更新が反映されません。Git Pushでコードが更新されない

git push origin master 
Enter passphrase for key '*********/.ssh/id_rsa': 
Counting objects: 5, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (5/5), done. 
Writing objects: 100% (5/5), 421 bytes | 0 bytes/s, done. 
Total 5 (delta 4), reused 0 (delta 0) 
remote: Already on 'master' 
remote: M  app/Http/routes.php 
To ssh://ec2-**-***-***-***.us-west-2.compute.amazonaws.com/*************** 
    ce2cc5b..8149f07 master -> master 

"remote:M"とは何も分かりません。

私をご案内ください。できるだけ早くリリースする必要があります。

+0

'git remote -vv'の出力は何ですか? – Flows

+0

git remote -vvの出力は次のようになります: - origin ssh://[email protected]**-**--**--***.us-west-2.compute.amazonaws.com/ ***************(フェッチ) 起源ssh://[email protected]**-.*--**-***.us-west-2.compute .amazonaws.com/***************(プッシュ) – user3793037

+0

私は 'remote:MはModifiedだが確かではないと思う。 あなたは彼のきれいなかどうかを確認するためにgitの歴史を見ましたか? 'git status'に何を与えるのですか?あなたは一人でこのリポジトリで作業しますか? – Flows

答えて

1

まず、あなたがgit push(または、そのことについては、git fetch)を実行したときのことを覚えて、 GITSとプロセスに関与リポジトリがあります。 1つは "あなたの" Gitと "あなたの"リポジトリ、もう1つはリモートのGitとそのリポジトリです。 (リモートのリポジトリには、インターネット電話のコールを介して、あなたからのリクエストを取るだけでなく、あなたに属しているが、ちょうどいくつか人と考えることがあります。)を印刷

メッセージをremote:でなし彼らの正面は Gitから来ています。 remote:のメッセージがリモートから送信されています。彼らは他のGitから直接来ているわけではありません.2つのGITはインターネット電話の設定をしているので、お互いが何を話しているかを知ることができます。他のGitによって実行されます。他のGitがフックなどのものを実行すると、のメッセージがに表示されます。 GitはこれらのメッセージをGitにコピーしてGitに伝えます。フックはこれを印刷したので、それは重要なことかもしれません。だから、あなたはこのプロセス全体、すなわちgit pushをやっている人間の中で唯一の人間にこれを見せてもらえませんか?そしてあなたのGitは:remote: whateverを印刷して、何かが他のギルドが表示されたことを示します。whatever


今、あなたのセットアップでは、あなたが他のシステムに設定展開スクリプトを持っています。それはあなたのポスト受信フックです。ポスト受信フックは多くのことを行うことができますが、特定のスクリプトはデプロイメント・メカニズムとして意図されています。 (コメントは、フォーマットをサポートしていません)あなたはa commentにこのスクリプトまでのおおよその内容を置くが、ここでは、より良いフォーマットです:

#!/bin/sh 
GIT_WORK_TREE=******************** 
export GIT_WORK_TREE 
git checkout master 

は何このスクリプトがないと、リモート - のそれ以外の裸のリポジトリ-1を作るです非ベアリポジトリとして動作します。作業ツリーは、GIT_WORK_TREEによって指定されます。 (ちなみに、これは3行の代わりに1行のスクリプトにすることができます:

git checkoutは時々どのような出力を出力しますか?さて、それを試してみましょう:

$ git checkout master 
M  wt-status.c 
Already on 'master' 

あなたはremote:を前に付け、あなたの出力で何を見ましたか?

remote: Already on 'master' 
remote: M  app/Http/routes.php 

結論:これはほぼ確実にあなたの展開スクリプトを実行git checkoutコマンドから来ています。 (2行の順序は変更されましたが、まだgit checkoutからです)

の場合git checkoutこの種類のメッセージを印刷しますか? Gitリポジトリのdocumentationはここに少し薄いですが、:

は、<branch>で作業の準備 インデックスと作業ツリー内のファイルを、更新して 支店でHEADを向けることによって、それに切り替えるには。 作業ツリー内のファイルのローカル修正は、のままであるため、<branch>にコミットすることができます。

したがって、これはインデックスおよび/またはワークツリーが変更されたときに発生しますが、それらのローカルな変更は保持できます。

これは、HEADコミットについて、ファイルapp/Http/routes.phpに何らかの変更が加えられたことを意味します。 Gitを使ってリモートに移動すると、リモートGitはデプロイメントスクリプトを実行します。デプロイスクリプトが未処理のリポジトリとともに非公開の作業ツリーを使用して、それが非ベアリポジトリのように動作するようにすると、git checkoutチェックアウトで実行されます。 "check the" local-to-remote-work -tree)を修正しましたが、それはM行を出力します。

保管されている修正は上のリモートであるので、それに対処する唯一の方法は、あなたがローカルそこで働くことができるようににリモート(中例えば、SSH)を行くにあります。その作業ツリーが変更された理由を調査します。誰がこの変更を行ったのですか?どうして?それは何をするためのものか?それはリポジトリにあるはずですか?それは別のやり方をしなければならないのでしょうか?デプロイメントスクリプトを変更する必要がありますか? Iはあなたのためにこれらの質問に答えることはできません。 は、このすべての作業を行う方法を決定する必要があります。少し絵を複雑


、これらは、リモートの指数である可能性があります。 git --work-tree=... checkoutは、そのインデックスが作業ツリーを反映していても、リポジトリからの(単一の)インデックスを使用するため、このインデックスは実際にベアリポジトリのインデックスです。しかし、その変更はリモートの配備作業ツリーでのみ行われる可能性があります。

+0

ありがとうございました。最後に、どこからリモート:Mが表示されているかを知る必要があります。私はフックポスト受信を「GIT_WORK_TREE = ******************* export GIT_WORK_TREE git checkout -f master」と変更しました。今はすべて正常に動作しています。おかげさまで一人一人... – user3793037

関連する問題