1

現時点で使用しているセットアップは次のとおりです。

フック 1 HUB リポジトリで更新後のフックを使用します。そのため、他のクローンによって HUB にプッシュが行われると、HOOK がアクティブになり、HEAD ポインターの配置に従って、開発またはマスターの対応する WORKING DIRECTORY にアクセスし、そこから次のいずれかを行います。ハブから開発ブランチにプルするか、ハブからマスター ブランチにプルします。

という~/private/repos/projectname_hub.git/hooks名前のファイルを作成しpost-update pico post-update、次の内容を内部に配置します。

#!/bin/sh

echo
echo "**** Pulling changes into Dev [Hub's post-update hook]"
echo

case " $1 " in
*'refs/heads/dev'*)
        cd /home/user/www/dev/ || exit
        unset GIT_DIR
        git pull hub dev
        echo
        echo "Dev was pulled"
        echo
        ;;
esac

case " $1 " in
*'refs/heads/master'*)
        cd /home/user/www/www/ || exit
        unset GIT_DIR
        git pull hub master
        echo
        echo "Master was pulled"
        echo
        ;;
esac

exec git-update-server-info

フック 2 履歴の競合を防ぐために、何らかの理由で実稼働サーバーに直接コミットする場合、プライム マスター コミットが発生するたびに、コミットされた変更を HUB にプッシュします。

という~/www/www/.git/hooks名前のファイルを作成するときpost-commit pico post-commit

#!/bin/sh

echo
echo "**** pushing changes to Hub [Prime's post-commit hook]"
echo

git push hub

上記のセットアップでは、「すべてが最新です」と表示されているマスターに物事をプッシュした可能性がありますが、そうではありません。

明らかに、追加およびコミットされたすべてのファイル。

そのため、いくつかの助けを借りて、問題はフックのセットアップにあることがわかりました。

post-updateフックで使用する代わりに、次のように言われましたgit pull hub master:

git fetch hub && git reset --hard hub/master

私の質問は次のとおりです。誰かが必要な説明を提供してもらえますかgit pull hub dev?git pull hub master

はい、私は git の使用に関してまったく新しいので、少なくとも理解せずに上記をブラインド コピー ペーストしたくありません。誰かが数行落としてくれれば、本当にありがたいです。

更新:これを行うgit branch -aと、次のようになります。

* master
  remotes/hub/dev
  remotes/hub/master

前もって感謝します。

4

1 に答える 1

1
git fetch hub && git reset --hard hub/master

これは、まったく開発していない場合にのみ代替手段です。からフェッチされたものに/home/user/www/www/リセットされます。 しかし、それはあなたには当てはまりません。なぜなら、あなたはプッシュバックするためのポストコミットを持っているからです。master HEADwww/wwwhub
www/www

「すべてが最新です」と書かれているマスターに物事をプッシュしたかもしれませんが、そうではありません。

これは通常、DETACHED HEADの状況(HEADのないブランチでコミットする場合)が原因です。それがいつ起こるかをチェックgit branch -aし、あなたがブランチにいることを確認してください。

于 2012-11-23T07:47:12.857 に答える