2009-10-31 4 views
5

私はgitと分散バージョン管理の新人ですが、自分のローカルソースinitに管理しています。自分でssh経由でプライベートリモートリポジトリ(起点)をセットアップしてくださいウェブホストであり、マスターからオリジンまで基本pullpushを実行します。 (私もクローンをテストしています!)Gitの次のステップ:密接なワークフローの確立

私は単方向のgitワークフローを制御していると思います。しかし、私は、開発、ベータ、およびプロダクションの間で動くものをどう扱うかについて考え始めています。私が見つけたほとんどのチュートリアルでは、さまざまなユーザーの結合とクローンとプルとプッシュについて話していますが、私の場合はそれが私のものです。

経験豊富なgitユーザーが自分のワークフローについていくつかの洞察を提供し、マージやブランチなどを処理する方法についていくつかの提案を提供してくれると期待しています。

  1. リモートメインのgitストア:SSH://[email protected]/git/myproject.git
  2. ホームWebサーバ、メインの開発ここで

    は、私が持っているだろう異なるマシン/場所ですボックス(私は個人的に、座って、作業の大半を行う場所)

  3. リモートWebサーバ、ベータテスト(公共面する):http://beta.example.com(生産の前に私のdevの作業をテスト)
  4. リモートWebサーバ、生産現場:http://example.com(実際の人は、うまくいけばサイトを使用します)
  5. (時々)ラップトップで(周りのローカルWebサーバーを実行して)移動しています。

これはどう対処しますか?前もって感謝します。

答えて

5

ここで過度に複雑な作業フローを作成することには意味がありません。「中央」設定では、ちょうど良いIMHOが実行されます。

あなたはすべての開発、リモート名の "起源"を保持するあなたの中心になるべきメインのリモートを持っています。 あなたはあなたのdevelボックスで作業し、あなたのコミットを行い、時々あなたのものを "origin"にプッシュします。リリースの時間だと思うと(おそらくベータ版)、あなたのものにタグをつけて、原点にプッシュし、ベータ版サーバーに行き、そのタグを公開テストのためにそこから引っ張ってください。あなたの生産マシンに引っ張ることができるリリースがあるまで繰り返す...

あなたのA/B質問(たぶんあなたのdevelマシンとラップトップ)について:もちろんそれはできますが、単に変更をプッシュするだけではありませんAまたはBを原点とする。 マシンAの作業を「原点」にプッシュしたと仮定し、その状態を「17」と呼ぶことができます。今あなたの仕事はさらに、地方の州 "18"〜 "20"を作成します。 「原点」がまだ「17」にある場合は、各ステップが直前の状態の直系子孫であるため、変更を元に戻すことができます。それはgitで "早送り"と呼ばれています。

しかし、Bからのプッシュが間に入ると、「直接子孫」の行が壊れ、Aからのプッシュは失敗します。解決策は、しかし、単純である:Aは、AにBによって導入されたすべての変更をマージし、原点から引っ張って、そしてそれがプッシュすることができますが...

2

自分で作業している場合は、したくない場合はブランチまたはマージする必要はありません。 Gitは他のバージョン管理システムよりもやや簡単にやっているので、のように別の場所でタグを使うことができます。 O'Reillyの本を強くお勧めします。かなりよく書かれています。

+0

私はブランチを使用しないと、システムAを変更したり、システムBを変更したり、両方を元に戻したりすることができますか?私はそれが私が立ち往生した場所だと思います... – thornomad

1

はい、それは扱うことができ、物事を明確に

希望.. Aからの変更、Bからの別の変更、両方が押された。しかし、2人のうちの1人は、プッシュできるようにするために、起源から引っ張らなければならない。 2人のうちの1人が起源の「古く」なっているので、もう一方は起源に追い込まれたからです。

関連する問題