まず、あなたが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
は、そのインデックスが作業ツリーを反映していても、リポジトリからの(単一の)インデックスを使用するため、このインデックスは実際にベアリポジトリのインデックスです。しかし、その変更はリモートの配備作業ツリーでのみ行われる可能性があります。
'git remote -vv'の出力は何ですか? – Flows
git remote -vvの出力は次のようになります: - origin ssh://[email protected]**-**--**--***.us-west-2.compute.amazonaws.com/ ***************(フェッチ) 起源ssh://[email protected]**-.*--**-***.us-west-2.compute .amazonaws.com/***************(プッシュ) – user3793037
私は 'remote:MはModifiedだが確かではないと思う。 あなたは彼のきれいなかどうかを確認するためにgitの歴史を見ましたか? 'git status'に何を与えるのですか?あなたは一人でこのリポジトリで作業しますか? – Flows