0

非常に一般的なシナリオ:

裸のリポジトリがあります。開発者がgit pushローカル マシンからbareレポに移動し、別の開発者が実行git pullすると、ローカル バージョンのアプリケーション (含まれるファイル) が更新されます。

ただし、ときどき、 で直接 (ホストなどによって) 変更が行われるremote working treeと、ローカル マシンに異なるファイル バージョンが存在することになり、remote working treeget は常に古くなっています。

これによれば:

https://git.wiki.kernel.org/index.php/GitFaq#non-bare

プッシュ操作は、常にリポジトリ履歴の伝播と参照の更新に関するものであり、作業ツリー ファイルには決して触れません。特に、リモート リポジトリでチェックアウトされているブランチをプッシュして更新すると、作業ツリー内のファイルは更新されません。

checked out in a remote repository意味がわかりません。git checkout whateversshをリモートで使用してブランチを切り替えることはしませんでした(それが意味する場合)。

とにかく、git push を実行すると、作業ツリー ファイルは変更されません。Ok。

したがって、これを解決するには:

何をしているのか確信がある場合は、プッシュした側で「git reset --hard」を実行できます。これにより、その側で行ったすべての変更が失われ、作業ツリーがプッシュした最新のリビジョンにリセットされることに注意してください。

「git リセット --hard」

私はこれをしましたが、何も変わりませんでした。それは言います:

HEAD is now at 45d948a Merge branch 'dev' of /home/blabla/private/repos/blabla_hub into dev

しかし、何も変わっていません。

1) すべての開発者がベア (作業ツリーなし) リポジトリをプッシュおよびプルするだけの場合、どのように作業ツリーを更新しますか? (ファイルはどこに渡されますか?)

remote working tree2)期待どおりに更新されなかったのはなぜですか?

私の質問は明確ですか?ご意見をお聞かせください。

アップデート

私は dev と master ブランチを使用しています。それとは別に、ローカルとリモートの両方で、次のスキーマを使用しています。

このシステムの重要なアイデアは、Web サイトが 1 対のリポジトリとしてサーバー上に存在するということです。ライブサイトを含む従来のリポジトリと並んでベアリポジトリ。2 つの単純な Git フックがペアをリンクし、それらの間で変更を自動的にプッシュおよびプルします。

2 つのリポジトリ:

Hub is a bare repository. All other repositories will be cloned from this.
Prime is a standard repository, the live web site is served from its working directory.

リポジトリのペアを使用するのは簡単で柔軟です。ssh アクセスを使用したリモート クローンは、ハブへの単純な git プッシュでライブ サイトを更新できます。サーバー上で直接編集されたファイルは、コミット時に即座に Hub にミラーリングされます。

参照。http://joemaller.com/990/a-web-focused-git-workflow/

4

1 に答える 1

1

私の理解では、少なくとも 3 つのリポジトリがあります: localhub、およびwww/dev。リポジトリで作業を行いますlocal(変更、コミット、および へのプッシュhub)。www作業ツリーが Web サーバーによって変更されることがあります。これらの変更をバージョン管理下に置きたい場合は、それらをwww/devリポジトリにコミットし、コミットを からwww/devにプッシュすることもできますhub。(cron ジョブを使用してこれを自動化できるgit status場合があります。コミットするかどうかを判断するには、の出力を使用することをお勧めします。)

あなたの元の質問は、レポの作業コピーがレポ自体www/devと同期していないように聞こえました。www/devチャットでさらに議論した結果、www/devレポは常にレポと最新であるとは限らないようhubです。git pull必要に応じてリポジトリで実行する必要があるだけですwww/dev(おそらくフックやその他のスクリプトを使用)。

于 2013-03-18T20:30:23.500 に答える