中間の git リポジトリをインストールしたいのですが、すべてのチーム メンバーがこのリポジトリにコミットしてプッシュできます。
すべてのチーム メンバーがすべてのタスクを完了したら、中間リポジトリでコミットされたすべての変更を、インターネットでホストされている別のサーバーにある公式の git リポジトリに配信する必要があります。
私の質問は、この構成を行うことは可能ですか? そしてそれを行う方法は?
中間の git リポジトリをインストールしたいのですが、すべてのチーム メンバーがこのリポジトリにコミットしてプッシュできます。
すべてのチーム メンバーがすべてのタスクを完了したら、中間リポジトリでコミットされたすべての変更を、インターネットでホストされている別のサーバーにある公式の git リポジトリに配信する必要があります。
私の質問は、この構成を行うことは可能ですか? そしてそれを行う方法は?
はい、できます。GITはDistributed Revision Control Systemであるためです。複製されたリポジトリーは、他のリポジトリーの起点 (宛先) として使用される可能性があります。
main.git という「メイン」リポジトリのプロキシ リポジトリを作成するとします。
git clone --bare path_to_main_repo/main.git path_to_proxy_repo/proxy.git
git clone path_to_proxy_repo/proxy.git path_to_working_repository/working_repository
次に、リポジトリからリポジトリworking_repository
に、proxy
およびリポジトリからプッシュできます。proxy
main
GIT を使用する場合、任意のリポジトリが mainTargeted / proxy / orAnythingElse リポジトリの役割を果たす可能性があることに注意してください。
私があなたを正しく理解していれば、git repos A に最初の変更を加えたいと思います。
ある時点 (マイルストーン、日付など) に到達すると、リポジトリ A へのすべての変更が取得され、リポジトリ B に適用されます。
ほとんどの開発チームは、単一のリポジトリと分岐でこれを行います
ただし、好きな場所にブランチを作成することは可能です。
git remote
コマンドのマニュアルページに例があります
EXAMPLES
· Add a new remote, fetch, and check out a branch from it
$ git remote
origin
$ git branch -r
origin/master
$ git remote add linux-nfs git://linux-nfs.org/pub/linux/nfs-2.6.git
$ git remote
linux-nfs
origin
$ git fetch
* refs/remotes/linux-nfs/master: storing branch 'master' ...
commit: bf81b46
$ git branch -r
origin/master
linux-nfs/master
$ git checkout -b nfs linux-nfs/master
リポジトリ A は、上記の例の linux-nfs のようになります。これを行った後、git merge を使用して 2 つを組み合わせることができます
プロジェクトで作業するとします。master からコードをプルして、新しいブランチを開くだけです。
git pull origin master
git checkout -b new-branch
...
これで、ブランチをプッシュするか、コミットをプッシュする前に作業を開始できます。
...
git add .
git commit -am 'I am pushing in bew-branch'
...
git add .
git commit -am 'I am pushing in bew-branch'
...
ブランチにいくつかの機能があります (マスターにはありません) あなたはこのブランチにワーカーを持つ最初の開発者なので、...オリジンにプッシュできます。
...
git push origin new-branch
...
現在、「origin/new-branch」というブランチが存在し、すべての開発者がこのブランチからプルできます。次に、localsl ブランチでコミットを続けます。
...
git add .
git commit -am 'I am pushing in bew-branch'
...
git add .
git commit -am 'I am pushing in bew-branch'
...
他の開発者がいくつかのコードをプッシュしたため、今度はプルする必要があります
...
git pull origin master
...
Fix merge
...
git push origin new-branch
...
そして最後に、すべてのコミットをマスターに置くことができます
...
git checkout master
git merge new-branch
git push origin master
終わり。
ベアリポジトリを使ってみてください ( http://git-scm.com/book/ch4-2.html )
基本的に、次のような新しい git ベア リポジトリを開始します。
git init --bare
を使用して、各開発者のリモートにこのリポジトリを追加します
git add remote upstream_intermediate_bare path/to/bare/repo
そして、コミットを上流の裸のリポジトリにプッシュします
git push upstream_intermediate_bare branch_name
次に、公式の git リポジトリに別のリモートを追加します
git add remote downstream_intermediate_bare path/to/bare/repo
git pull downstream_intermediate_bare branch_name
プッシュおよびプル ソースとしてのみ使用されるリモート リポジトリの一般的なケースでは、ベア リポジトリが重要です。これを確認してください。
編集:サンプル例
cd ~/Desktop/test
mkdir dev1
mkdir official
cd dev1 && git init && touch file && git add . && git commit -m "msg" && cd ..
cd official && git init && cd ..
git init --bare interim
cd dev1 && git remote add upstream_intermediate_bare ../interim && cd ..
cd official && git remote add downstream_intermediate_bare ../interim && cd ..
cd dev1 && git push upstream_intermediate_bare master && cd ..
cd official && git pull downstream_intermediate_bare master && cd ..
したがって、上記の例では、開発者コードはディレクトリ dev1 にあり、彼はプルまたはプッシュを実行できないベア リポジトリにプッシュします。リモートに追加して操作する必要があります。公式レポはベアレポジトリからプルするだけです。