2011-06-08 18 views
1

私は現在、リモートリポジトリを介して2人の開発者がアクセスする中央の裸のリポジトリを持つGitセットアップを持っています。私はブランチを作成した後、そのブランチをリモートのリポジトリから中央の裸のリポジトリにプッシュしようとしたときに問題に遭遇しました。これはthis postと同じです。Gitリモートブランチ

私が読んでいるのは、追跡ブランチがこれを実行する最善の方法だと読んだことですが、私が読んでいるVersion Control with Gitの本では、追跡ブランチは他のリポジトリからの変更に従うように設計されているマージしてコミットします。

私の現在の設定に基づいて、異なるブランチを扱う最良の方法は何ですか?

私はソフトウェアの各バージョン/リリースごとにブランチを作成しようと考えていましたが、最も簡単な方法は、各バージョン/リリースごとに別々のリポジトリを作成することです。

+1

git-flowを見てください。 [この記事(http://nvie.com/posts/a-successful-git-branching-model/)]では、ブランチやタグを使ってリリースやバージョンなどを整理するための賢明なアプローチについて説明しています。と[this one](http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/)はgit-flowツールそのものの概要を示しています。 –

+0

サイモンさん、ありがとうございます。私はそれをよく見ていきます。 – GrandMasterFlush

答えて

1

まず、ソフトウェアの各バージョンごとに独自のレポを作成する必要はありません。あなたが解放すれば、あなたが必要とするのはタグを作りなさい。このタグを参照すると、いつでもリリースされたバージョンに戻ることができます。

2人の開発者のそれぞれにプッシュすることが許可されている中央レポがある場合は、ベアレポ(参照した質問の推奨事項のように)を作成する必要があります。

ベアリポジトリには作業コピーがチェックアウトされていないので、(少なくとも最新のバージョンを取得していれば)いつでもプッシュすることができます。

シナリオは少し違って見えます。例えば、それぞれが作業コピーを持ち、これらの2つのボックス間をプッシュ/プルしたい2台のコンピュータがある場合、解決策は使用されるブランチだけです他のコンピュータからマスターにプッシュします。

desktopの場合:

git checkout -b temp 

その後、notebookにワークフロー後

(現在のブランチmyfeatureがチェックアウトしたリモートdesktopnotebookから枝myfeatureの変更をプッシュしたいと仮定すると:

git push desktop myfeature:myfeature 

ba ck on desktop

git checkout myfeature 
git branch -D temp 

これはそれです。

別の方法(同じ枝に動作する2つの開発者(アリスとボブ)の場合には)ボブがアリス–からmyfeatureの最新バージョンを取得したい場合、彼は代わりにアリスから変更を引っ張る–ということでしょう彼女にレシピのの変更をプッシュしてください。アリスのコンピュータが、リモコンaliceのボブのレポで設定され、ボブが現在myfeatureブランチをチェックアウトしていると仮定します。alice/myfeatureは(でそれを設定し)、彼myfeatureブランチのためのブランチを追跡するように構成されている場合

どちらのボブは

git pull alice 

を行います。または

git fetch alice 
git merge alice/myfeature 

アリスのmyfeature枝はブランチを追跡するように構成されていない場合。

+0

ありがとうございました。私は現在、あなたが提案した裸のレポモデルを使って作業しています。私が新しいブランチに加えた変更をチェックインするまでうまくいきました。あなたのコメントをお伝えします。 – GrandMasterFlush

+0

完了しました。 – GrandMasterFlush

+0

@ GrandMasterFlush:**正確に**は問題ですか?あなたは何かエラーや何かを得ますか? – eckes

関連する問題