私は学生で、数人のクラスメートと一緒に開発を行っており、git を使用する予定です
現在、git は裸のウェアハウスを構築しており、フックは Web プロジェクトに自動的に同期できます。
サーバー上のコードはウェアハウスではないため、元は別のサーバーにあったコードをベアウェアハウスにインポートし、チームメンバーがそれをプルできるようにしたいと考えています。やり方は?私が思いついた方法は、まずコードをローカル エリアにプルし、次にそれをローカル エリアから中央ウェアハウスにプッシュすることでした。自動同期により、プッシュされたコードは中央ウェアハウスによって Web プロジェクトに自動的に同期されます。しかし、個人的にはもっと良い方法があるはずだと感じています。教えてください?
また、プロジェクト全体で汎用 git リポジトリが使用されますか?それともプロジェクトの一部ですか?それがプロジェクト全体であり、ユーザーが写真をアップロードする場合、アップロードされた写真は、更新されるたびにローカルで更新する必要があるのではないでしょうか?
長い間情報を探していますが、この点に関する情報がほとんどありません。詳しく説明してください。
============================
こんにちは、私たちのチームは現在プロジェクトで問題を抱えています。5.1 でのプロジェクトのバグのため、クラスメートが自宅でバグを修正しましたが、彼のコンピュータには git がインストールされていなかったため、ftp を使用してアップロードしました。 。アップロードに FTP が使用されるため、中央ウェアハウスは使用されないため、フックの受信後はトリガーされず、受信後は Web サイトのプロジェクトにプッシュされません (少し複雑です。誰かが理解できることを願っています) 、そのため、彼がアップロードした部分を git を使用して取得することは不可能になりました。したがって、ここでの問題は、Web サイトのプロジェクトが変更されると (FTP でアップロードされた場合)、中央のウェアハウスにプルされ、ローカルで取得できるようにするためのフックをもう 1 つ記述する必要があることです。中央倉庫と Web サイトのプロジェクトが双方向で同期できるようにします。私たちのアプローチはあまり良くないかもしれませんが、当面はこれを行うことしかできません。ちなみに、マスターがより良い方法を提供してくれることを願っています。またよろしくお願いします
問題の説明があまり明確ではないので、私が理解していることを簡単に説明します。
コードの移行方法は問題ありません。
通常、git によって使用されるウェアハウスはプロジェクト全体であり、これにはいくつかのサブモジュールが含まれる場合があります。
あなたが言及したユーザーによる写真のアップロードは、実際には別の問題です。git プロジェクト ウェアハウスをサーバーに同期し、それを Web プロジェクトのディレクトリとして使用しましたか?
その場合、少し問題があります。まず、Git ウェアハウスは開発のみに使用されます。具体的なプロセスは、Jenkins などを使用します。 :
プロジェクト開発者は、コードのプッシュやタグ付けなどの操作を通じて github の Webhook をトリガーします。
Github は Webhook 設定に基づいてデプロイメント ツールをリクエストし、さらにリリース アクションを実行するようにデプロイメント ツールに通知します。
デプロイメント ツールは、最新のコードをコード ディレクトリにプルし、スクリプトまたはコマンドを通じて Web プロジェクトをパッケージ化し、新しい Web プロジェクト ディレクトリを生成して、サーバーに公開します。
この場合、ユーザーの写真は git コード ディレクトリではなくサーバーのプロジェクト ディレクトリにアップロードされるため、アップロードされた写真の更新について心配する必要はありません。
さらに、コード リポジトリを使用して Web プロジェクトとして公開する場合、アクセス権が適切に制御されていない場合、他の人が Git プロジェクト内のファイルを取得し、一部の情報が漏洩する可能性があります。
あなたが言及した方法は非常に良い方法です。2つの遠隔倉庫は相互に直接通信できないため、転送する必要があります。
ユーザー画像、キャッシュなどはもちろん無視する必要があります。ウェアハウスには有効なコードのみが保存されます。
実際、
.git
フォルダーにはすべての情報が含まれているので、そこにコピーするだけです。しかし、git にはこれを行うためのコマンドがあります.git
文件夹包含了所有的信息,你直接拷贝过去都可以。不过git有命令干这事这个操作基本上和下面的操作是一样的:
然后把拿到的
my_project.git
上传到裸仓库所在的服务器(替换文件夹),git文档给出了很详细的介绍:Git-on-the-Server-Getting-Git-on-a-Server。
至于第二个问题,大胆放心地把整个项目加入到git进行管理吧,包括资源文件、文档等,这样团队间更容易协作。但是不要包括编译产生的文件,这个通过.gitignore设置。至于更新图片的问题,如果图片是这个项目要使用的资源,那自然要fetch下来,没有任何问题。
也有团队会把项目下自动生成的IDE配置加到版本管理中,如果团员使用的都是同一个IDE可以共享设置,这个就见人见智了。
===========
等等,为什么"中央仓库则自动将push的代码同步到web项目", 我觉的你指的应该是运行的Web服务,构建服务器应该有一个无修改的本地仓库,主动向代码仓库
この操作は基本的に次の操作と同じです: 🎜 リーリー 🎜次に、取得したpull
,然后根据最新的代码启动构建,根据构建出来的结果刷新Web服务或者打包。这个动作可以由hooks触发,但公共的代码仓库不应该发起push
リーリーmy_project.git
を、ベア ウェアハウスが配置されているサーバーにアップロードします (フォルダーを置き換えます)。git ドキュメントには、非常に詳細な概要が記載されています。Git-on-the-Server-サーバー上で Git を取得する。 🎜 🎜 2 番目の質問に関しては、リソース ファイル、ドキュメントなどを含むプロジェクト全体を管理のために git に自由に追加してください。これにより、チームの共同作業が容易になります。ただし、コンパイルによって生成されたファイルは含めないでください。これは .gitignore によって設定されます。画像の更新の問題ですが、その画像がこのプロジェクトで使用するリソースであれば、当然問題なく取得されます。 🎜 🎜 プロジェクトの下に自動生成された IDE 設定をバージョン管理に追加するチームもあります。チーム メンバー全員が同じ IDE を使用している場合、これは知恵の問題です。 🎜 🎜============🎜 🎜ちょっと待ってください。なぜ「中央リポジトリはプッシュ コードを Web プロジェクトに自動的に同期する」のですか。実行中の Web サービスを指していると思います。ビルド サーバーには未変更のローカル リポジトリがあるはずです。 、コード リポジトリに積極的に
pull
し、最新のコードに基づいてビルドを開始し、ビルド結果に基づいて Web サービスまたはパッケージを更新します。このアクションはフックによってトリガーできますが、パブリック コード リポジトリはpush
を開始しないでください。 🎜