9

リベースはチームメイトの小さな変更用であり、マージは大きな変更用であるというスレッドを知っています。

私は 3 人のチームメイトの 3 つの Git を次のディレクトリ構造に保持しています。ここでは、全員が同じ初期コードを持っています。

project 
      | - I
      | - myTeamMate1
      | - myTeamMate2

ブランチは同じ Git 内にありません。これは、リベースとマージを使用できないことを意味します。チームメイト間の変更を同期するために vimdiff を使用しました。ただし、これには時間がかかります。

すべてのブランチが 1 つの Git の下にある次のディレクトリ構造を作成しようとして失敗しました。

project
      | - I - myTeamMate1 - myTeamMate2

ただし、私とチームメイトのために clone コマンドを実行します。

git clone <url>

チームメイトの 2 番目のクローンを実行した後、エラー メッセージが表示されます

fatal: destination path 'dotFiles' already exists and is not an empty directory.

コマンドを使用できるようにrebase3 人のチームでどのディレクトリ構造を使用すればよいですか?merge

4

4 に答える 4

10

サミュエルの答えを完成させるための他の考え。

  • SVN とは異なり、Git ではブランチとディレクトリはまったく無関係です。3 つのブランチ (チームの各メンバーに 1 つ) があっても、3 つのディレクトリを意味するわけではありません。それはあなたの質問で意味したことではありません(ディレクトリは実際には3つのGitリポジトリの3つのルートであるため)が、念のため明示的に言及することをお勧めします;)

  • Git は DVCS であるため、3 つのリポジトリはどこにでも配置できます (同じコンピューターの 3 つのディレクトリに配置することはできません)。UNC パス ( \\desktop\path\to\repo) 経由でアクセスできる場合は、リモートとして指定できます。

  • Gitクローンを使用すると、リモート ブランチへの参照を取得できますが、追跡ローカル ブランチを作成して同僚の作業を取得することはできません。ruby モジュールの「リモート ブランチ」が役に立ちます。

  • ブランチの SHA-1 を書き換えるので、リベースには注意してください(別のブランチの上でコミットをリプレイするため): チームメイトがブランチに基づいてマージを行っている場合、チームメイトは毎回すべてのコミットをマージする必要があります。すでに合併!
    この場合、2 つのブランチを用意するのが最適です。

    • 開発とリベースに使用している作業ブランチ(ピアの作業を統合するためですが、その操作は独自のブランチで行うこともできます)
    • 安定した作業のみをマージし、マージのソースとして他のリモートリポジトリで使用できる公開公開ブランチ。
于 2009-05-25T04:09:43.073 に答える
5

それらがあなたが述べたのと同じgitの中にないという事実は、決してあなたを制限しません。Git は分散されているため、これらのリポジトリ間でフェッチ、マージ、リベースなどを行うことができます。

チームメイトの変更を簡単にインポートしたり、リベースしたり、マージを実行したりできるように、チームメイトのリポジトリに名前を付けるgit remote --help方法を確認してください。ディレクトリ構造を変更する必要はありません。あなたのものは完全に使用可能です。

于 2009-05-24T18:25:34.017 に答える
4

正直なところ、私は素敵で長く詳細な応答を入力する作業を開始しました...しかし、これはhttp://excess.org/article/2008/07/ogre-git-で説明したよりもはるかによく説明されていますチュートリアル/ . 彼は、さまざまなブランチ、リモート、およびマージの使用について説明しています。スクリーンキャストでも行われますので、1 時間かけてコーヒーを飲みながら講義をお楽しみください。

あなたの質問に固有のものです:ディレクトリ設定を使用しないでください。Git は、SVN がブランチ フォルダーに対して行うのと同じ方法でディレクトリのブランチを処理しません。git のブランチはまったく別のものです。中央リポジトリをセットアップしない場合もありますが (推奨します)、全員が最終的なクリーンな作業をコミットする単一のマスターブランチをセットアップする必要があります。

私のリポジトリの例の 1 つに、Wikimedia Commonsのスクリーンショットがあります。私の例では、「バーテンダー」は自分のコードを tar チャンクでのみ送信するため、自分でインポートして管理する必要があります。「マスター」(ここでは remotes/elf/master としてのみ表示) は、私がインポートしてベースの変更を行う公開 svn リポジトリです。「オートクラシー」はコードの私自身のベースラインであり、「プライベート」は、管理したいが公開したくないパスワードを含む構成ファイルを保持する場所です。プライベートのタイムスタンプを確認すると、以下のブランチと一致していないことがわかります。これは、そのブランチをマージするのではなく、「オートクラシー」にリベースしたためです。

elf と bardの 2 つのリモート参照があることに気付くでしょう。これらは、ソフトウェアをホストする私の 2 台のリモート マシンです。枝を好きなように押したり引いたりできます。あなたの場合、他の開発者のリモート リポジトリがあり、彼らは自分のブランチを変更します。チュートリアルを見ると、それがどのように機能するかをよりよく理解できます。幸運を :)

于 2009-05-25T14:36:05.630 に答える