0

中間の git リポジトリをインストールしたいのですが、すべてのチーム メンバーがこのリポジトリにコミットしてプッシュできます。

すべてのチーム メンバーがすべてのタスクを完了したら、中間リポジトリでコミットされたすべての変更を、インターネットでホストされている別のサーバーにある公式の git リポジトリに配信する必要があります。

私の質問は、この構成を行うことは可能ですか? そしてそれを行う方法は?

4

5 に答える 5

2

はい、できます。GITDistributed 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およびリポジトリからプッシュできます。proxymain

GIT を使用する場合、任意のリポジトリが mainTargeted / proxy / orAnythingElse リポジトリの役割を果たす可能性があることに注意してください

于 2013-10-02T07:45:11.143 に答える
1

私があなたを正しく理解していれば、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 つを組み合わせることができます

于 2013-10-02T07:46:32.767 に答える
1

プロジェクトで作業するとします。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

終わり。

于 2013-10-02T09:15:35.757 に答える
1

ベアリポジトリを使ってみてください ( 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 にあり、彼はプルまたはプッシュを実行できないベア リポジトリにプッシュします。リモートに追加して操作する必要があります。公式レポはベアレポジトリからプルするだけです。

于 2013-10-02T08:55:14.550 に答える