1

私はこれが一般的であるように思われることを知っています、しかし私はこれをグーグルで検索してSOを検索しました、しかし私が見たほとんどの応答は私がすでにしたことをするように私に言うようです...

  1. 変更を加えました
  2. ステージングされたファイル
  3. ローカルでコミットされた変更
  4. リモートオリジン/マスターにプッシュ

トランスクリプトには「すべてが最新」と表示され続けますが、コミットされた変更はいずれもリモートブランチに表示されません。(SSHでディレクトリを表示すると、.gitフォルダーのみが表示され、プッシュされた変更は表示されません。)

リモートは、bare(# git config --bool core.bare true)に設定された空のリポジトリでした。

マスターブランチはローカルでチェックアウトされます。

アップデート

以下の議論を踏まえて、本来の意図を明確にすることが賢明だと思いました...

リモートはライブサイトであることが意図されているため、裸のリポジトリは望ましくなく、リモートで作業ツリーが必要になりますが、それでも更新を「プッシュ」する機能を促進することが望ましいでしょう。

この特定のケースについては、以下の私の回答も参照してください...

4

4 に答える 4

4

レポにプッシュしても、そのレポの作業ツリーは変更されません。ただし、ベア リポジトリには作業ツリーがなく、通常はベア リポジトリにプッシュするだけです。

別の言い方をすれば、別のリポジトリにプッシュしても、すべてのリポジトリ データが保存されている .git ディレクトリ内のファイルを除いて、そのリモートに関連付けられているファイルは変更されません。

于 2013-03-09T01:04:01.727 に答える
2

この動作を調べたところ、「プッシュ」操作中にリモート作業ツリーを更新しないのは、意図的な設計上の決定であることがわかりました。

私は通常、リモート ワーキング ツリー (ベア リポジトリ) を使用しませんが、デプロイに Git を使用している場合、この機能は明らかに問題を引き起こします。ありがたいことに、コミット フックを使用してツリーの更新をトリガーするソリューションがあります。見る:

于 2013-03-09T16:17:38.420 に答える
1

私は推測し、リモートリポジトリディレクトリを削除し、新しいリポジトリディレクトリをmkdirし、git init --bareを実行して、再試行します。次に、サーバーへのsshを確認し、repo dirに移動して、git logを実行すると、そこに変更が表示されます。

于 2013-03-09T01:08:53.160 に答える
0

注: この回答は、OP で意図された特定のケースに含まれています。他の回答は、一般的な場合に役立ちます。

@Ryan Stewart が正しく指摘したように、プッシュしても作業ツリー (OP の場合のライブ サイトの実際のコンテンツ) は更新されませんが、ベア リポジトリには作業ツリーがありません。

また、プッシュするには裸のリポジトリが必要なので、Apache が実際にライブ サイトとして機能するには、分離された作業ツリーが必要になります。

これがベストプラクティスかどうかはわかりませんが、これを行うには、基本的に...

サーバー上でこれを行います (ローカル クローンとは別に):

  1. ライブ サイトの作業ディレクトリを含むリポジトリを作成する
  2. 別のベア リポジトリを作成する
  3. ベアレポをライブレポのリモートにして、ライブマスターをそれにプッシュします
  4. メインリポジトリとベアリポジトリの間にフック (スクリプト) を作成して同期を維持する

私は Git のフックの概念に慣れていないので、これ以上詳しく説明するつもりはありません。

http://git-scm.com/book/en/Customizing-Git-Git-Hooks

于 2013-03-09T12:58:08.777 に答える