最近、ブランチが分岐したという通知に遭遇しました。それは、私が機能ブランチを作成し、それをリモートにプッシュし、数日後に再度作業を開始したときに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を使用したい理由を完全に理解していません。誰かがこれを説明できることを願っています、ありがとう!
アイデアは、まだプッシュしていない場合にのみリベースし、localコミットを再生することです。
プッシュした後(およびチームで作業している間)、ブランチをmaster
の上にリベースしないでください。SHA1が書き換えられるため、ブランチの新しい状態を強制的にプッシュする必要があります。
git merge master
ブランチへの追加が推奨されます。ローカルで競合を解決してから、コミットを増やし、通常のプッシュを実行します。
詳しくは、「 master
をブランチにマージすることと、ブランチをmaster
にマージすることの違いは何ですか? 」を参照してください。