私は初めてで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
新しいC8
ieC8'
が前にありmaster
、実際にはmaster
チェーン内の以前のようになっています。
しかし、これはどのように機能するのでしょうか? の一部ではないため、が失敗C8
に依存している場合。
たとえば、クライアントが使用する機能がある場合、それはブランチには存在しません。したがって、の後に、で定義された関数に依存関係がありますC3
rebase
C3
branch
C3
main
rebase
C8'
C3
には存在しませんmain
。したがって、コードはコンパイルされません。
ワークフローの説明を手伝ってくれる人はいますか?rebase
チュートリアルのこの部分について私が言ってgit-scm
いること(間違っている)は正しいですか?