0

git がインストールされる場所は、Local、Bare、Development の 3 つです。

Local から Bare にプッシュし、post-receive フックが開発ブランチを Bare から Development にプッシュします。コミットは git ログに問題なく表示されますが、Development が現在受信しているブランチにある場合は、ステージングされ、コミットする準備ができているファイルの変更されたリストを取得します。

ステージングされたファイルは実際には古いコード (コミット前) であり、新しくプッシュされたコードを表示するには、すべてを git stash する必要があります。私が達成しようとしているのは、コードが Local から Bare にプッシュされると、自動的に Development サーバーで表示できるようになり、Development を直接操作する必要がないことです。

例 -- ローカルで:

「dev」ブランチの autoload.php を変更して、新しい php 5.4 配列を使用します

$autoload = []; // instead of $autoload = array();

ベア リポジトリにプッシュする

git push

Post-receive は正しく起動し、コードを Bare の 'dev' ブランチから Development の 'dev' ブランチに移動します。

開発で git status を実行すると、次のようになります。

modified:  application/config/autoload.php

autoload.php にはまだ古いコードが表示されます。

$autoload = array();

新しいコードが表示されるのは、git stash を実行した後でのみです。

4

1 に答える 1

0

裸ではないブランチにプッシュするべきではありません。それが、このように物事が同期しなくなる原因です。git stash を実行すると、ファイルが HEAD に同期され、変更が含まれるようになります。

開発サーバーに接続して git pull を実行する方がよいでしょう。

于 2013-01-14T16:04:46.643 に答える