本人学生党,现在和几个同学一起开发,打算用git
目前git搭建好裸仓库了,并且hooks可以自动同步到web项目中.
由于服务器上的代码不是仓库,现在想要将原先另一个服务器上的代码导入到裸仓库上,然后供团队成员去pull。该如何做?自己想到的办法就是先将代码拉到本地,然后再从本地push到中央仓库,由于做了自动同步,所以中央仓库则自动将push的代码同步到web项目。但个人感觉应该有更好的方法。求告知?
还有就是一般git的使用仓库是整个项目吗?还是项目中的部分?如果是整个项目,用户上传图片那岂不是每次更新还要将上传的图片更新到本地。
查了挺久资料的,也很少讲这方面的,求各位大神详解。
===========================
您好,就现在我们团队在项目中出现了一个问题就是,由于5.1期间项目出了个bug,有个同学在家里修改了bug,但他的电脑没装git,所以使用ftp上传了。现在由于使用ftp上传所以没有使用到中央仓库自然就没有触发到hooks的post-reveice也就不会push到网站项目中(有点绕,望大神能理解),所以现在使用git就无法获取拉取到他所上传的那一部分。所以现在的问题就是我要写多一个hooks,网站项目上的一旦改变(如果是ftp上传的)则pull到中央仓库,然后本地才能获取。做到中央仓库和网站项目能双向同步。可能我们这种做法不太好,但是目前暂时只能这么做,当然也希望大神回答是顺带提供下好的方法。再次谢过
PHP中文网2017-05-02 09:33:53
問題の説明があまり明確ではないので、私が理解していることを簡単に説明します。
コードの移行方法は問題ありません。
通常、git によって使用されるウェアハウスはプロジェクト全体であり、これにはいくつかのサブモジュールが含まれる場合があります。
あなたが言及したユーザーによる写真のアップロードは、実際には別の問題です。git プロジェクト ウェアハウスをサーバーに同期し、それを Web プロジェクトのディレクトリとして使用しましたか?
その場合、少し問題があります。まず、Git ウェアハウスは開発のみに使用されます。具体的なプロセスは、Jenkins などを使用します。 :
プロジェクト開発者は、コードのプッシュやタグ付けなどの操作を通じて github の Webhook をトリガーします。
Github は Webhook 設定に基づいてデプロイメント ツールをリクエストし、さらにリリース アクションを実行するようにデプロイメント ツールに通知します。
デプロイメント ツールは、最新のコードをコード ディレクトリにプルし、スクリプトまたはコマンドを通じて Web プロジェクトをパッケージ化し、新しい Web プロジェクト ディレクトリを生成して、サーバーに公開します。
この場合、ユーザーの写真は git コード ディレクトリではなくサーバーのプロジェクト ディレクトリにアップロードされるため、アップロードされた写真の更新について心配する必要はありません。
さらに、コード リポジトリを使用して Web プロジェクトとして公開する場合、アクセス権が適切に制御されていない場合、他の人が Git プロジェクト内のファイルを取得し、一部の情報が漏洩する可能性があります。
漂亮男人2017-05-02 09:33:53
あなたが言及した方法は非常に良い方法です。2つの遠隔倉庫は相互に直接通信できないため、転送する必要があります。
ユーザー画像、キャッシュなどはもちろん無視する必要があります。ウェアハウスには有効なコードのみが保存されます。
PHPz2017-05-02 09:33:53
実際、.git
フォルダーにはすべての情報が含まれているので、そこにコピーするだけです。しかし、git にはこれを行うためのコマンドがあります.git
文件夹包含了所有的信息,你直接拷贝过去都可以。不过git有命令干这事
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.
这个操作基本上和下面的操作是一样的:
$ cp -Rf my_project/.git my_project.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 ドキュメントには、非常に詳細な概要が記載されています。pull
し、最新のコードに基づいてビルドを開始し、ビルド結果に基づいて Web サービスまたはパッケージを更新します。このアクションはフックによってトリガーできますが、パブリック コード リポジトリは push
を開始しないでください。 🎜