私は初めてでgit、リベースを理解しようとしています。私の経験はClearcase.
だからまず、rebase が merge とまったく同じかどうかがわかりません。同じことに対して2つの手順があるのはなぜですか?
また、私はgit-branchingからこの部分を読んでいます。
ここにあります:
次に、次のように述べています。
$ git rebase --onto master server client
これは基本的に、「クライアント ブランチをチェックアウトし、クライアント ブランチ
とサーバー ブランチの共通の祖先からパッチを見つけ出し、それらをマスターに再生する」ことを意味します。少し複雑です。しかし、図 3-32 に示す結果は、非常に優れています。
したがって、このコマンドは、共通の祖先を除くサーバーおよびクライアントブランチの共通の祖先の後にすべてのコミットを取得することを意味すると思います。ということで、次の写真で終わります。
次に、次のように述べています。
これで master ブランチを早送りできます (図 3-33 を参照):
$ git checkout master
$ git merge client
この例は私には間違っているようです。
2 番目の図では、「移動」C8しC9、結果としてrebase. 次に、マージします。
しかしC8出てきてC3、C3コードはmasterブランチに存在しません。
ただし、rebase新しいC8ieC8'が前にありmaster、実際にはmasterチェーン内の以前のようになっています。
しかし、これはどのように機能するのでしょうか? の一部ではないため、が失敗C8に依存している場合。
たとえば、クライアントが使用する機能がある場合、それはブランチには存在しません。したがって、の後に、で定義された関数に依存関係がありますC3rebaseC3branchC3mainrebaseC8'C3には存在しませんmain。したがって、コードはコンパイルされません。
ワークフローの説明を手伝ってくれる人はいますか?rebaseチュートリアルのこの部分について私が言ってgit-scmいること(間違っている)は正しいですか?