1

ワークフローを変更しようとしていて、ftp の代わりに git を使い始めました。ローカルリポジトリを管理するために Tower を選択しました。サーバーにベア git を作成し、Tower を介してクローンを作成しました。ここまでは順調ですね。変更をコミットしてプッシュしても、ファイルが更新されません (FTP でファイルを開いたが、変更されませんでした)。だから私は自分のローカルレポを削除し、リモートサーバーからクローンを作成しました。変更がそこにあり、ファイルが変更されました。なぜこれがそうなのか、誰にもアイデアがありますか?前もって感謝します。

4

2 に答える 2

3

作業コピー (チェックアウトされたファイルを含む) とリポジトリ (コミットを含み、プッシュ時に更新される) の違いを理解する必要があります。関連するリポジトリが新しいコミットを受け取ったときに作業コピーを更新したい場合は、おそらくpost-receiveフックを作成する必要があります。

于 2013-02-08T19:17:12.093 に答える
1

同様のアプローチを使用して、ホームページを展開しています。私のpost-receiveフックは次のようになります。

#!/bin/sh -eu
export GIT_DIR=/path/to/bare-git-repo
export GIT_WORK_TREE=/path/to/working-tree
cd "$GIT_WORK_TREE"
git reset --hard
git checkout

gitベアリポジトリ自体とその作業ツリーに別々のディレクトリを使用していることに注意してください。サブディレクトリを持つ作業ツリーがある場合は.git、これで十分です。

$ cat .git/hooks/post-receive 
#!/bin/sh -eu
git checkout -f

また、受信リポジトリ側でこのコマンドを 1 回実行する必要があります。

git config receive.denyCurrentBranch ignore

そうしないと、git は、チェックアウトされた作業ツリーでリポジトリへのプッシュを受け入れません。

于 2013-02-09T16:24:33.310 に答える