-1

TestRepoというローカルリポジトリがあります。--bareオプションを使用してクローンを作成し、このクローンを圧縮してサーバーにスローします。それを解凍しても、まだむき出しです。

次に、次のようなものを使用して、sshを介してローカルでベアリモートリポジトリのクローンを作成します。

git clone ssh://git@host.com/~/TestRepo.git TestRepoCloned

ローカルのTestRepoClonedはベアではなく、「origin」と呼ばれるリモートがあります。設定ファイルの外観から正しく追跡しているようです

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = ssh://git@host.com/~/TestRepo.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

既存のファイルを編集します。を介して現在のブランチ(マスター)に変更をコミットします

git commit -a -m "Edited a file."

コミットは成功し、すべてが順調です。

この変更をSSH経由でリモートリポジトリにプッシュすることにしました。

git push

リモートリポジトリはもうむき出しではありませんが、完全な作業ディレクトリがあり、それ以上プッシュしようとするとエラーメッセージが表示され続けます。

私が読んだことはすべて、私がしていることが正しいことを示唆しているようですが、それは単に機能していません。変更をベアリモートリポジトリにプッシュして、実際にベアのままにしておくにはどうすればよいですか?

4

2 に答える 2

4

これは起こらないはずです。post-receive私の推測では、チェックアウトを引き起こす何らかのフックスクリプト(おそらく)がある、Gitにバグがあると思います。どちらも可能性は低いですが、私が想像できるのはそれだけです。

于 2009-10-10T20:43:12.173 に答える
3

zip / unzipがファイルパーミッション(実行可能ビットなど)を保持しないため、以前に非アクティブ化されたフックがアクティブ化される可能性があります。サーバーのフック権限を確認するか、zip部分全体をスキップして、サーバー上に直接ベアリポジトリを作成し、通常のgitpushを使用してデータをアップロードすることをお勧めします。

于 2009-10-10T21:02:43.603 に答える