web-dev-qa-db-ja.com

Gitブランチはリベース後に分岐したので、なぜリベースするのですか?

最近、ブランチが分岐したという通知に遭遇しました。それは、私が機能ブランチを作成し、それをリモートにプッシュし、数日後に再度作業を開始したときにmasterでリベースを行ったときです。

git checkout -b feature-branch
git Push Origin feature-branch:feature-branch

...そしてマスターになると...

git pull Origin master
git checkout feature-branch
git rebase master

しかし、私が再びブランチをプッシュしたいときは、それは言います:

On branch feature-branch
Your branch and 'Origin/feature-branch' have diverged,
and have 67 and 1 different commit each, respectively.

私はこの回答を「 リベース後に分岐したGitブランチ 」で見つけました:

すでにブランチをプッシュしているので、ブランチをリベースするのではなく、ソースブランチにマージする必要があります。

質問

this を読んだ後でも、フローで異なる方法を実行する必要があったことと、まだgit rebaseを使用したい理由を完全に理解していません。誰かがこれを説明できることを願っています、ありがとう!

16
Amber

アイデアは、まだプッシュしていない場合にのみリベースし、localコミットを再生することです。

プッシュした後(およびチームで作業している間)、ブランチをmasterの上にリベースしないでください。SHA1が書き換えられるため、ブランチの新しい状態を強制的にプッシュする必要があります。

http://rypress.com/tutorials/git/media/5-1.png

git merge masterブランチへの追加が推奨されます。ローカルで競合を解決してから、コミットを増やし、通常のプッシュを実行します。

http://i.stack.imgur.com/wBMwq.png

詳しくは、「 masterをブランチにマージすることと、ブランチをmasterにマージすることの違いは何ですか? 」を参照してください。

20
VonC