申し訳ありませんが、別の「リベース」の質問ですが、私はそれについて混乱しています。
時々、開発ブランチのコミットをリモート(オリジン)にプッシュします。現在、リベースで常に言及されていることの1つは、「変更をプッシュした場合はリベースしないでください」です。
つまり、開発ブランチをリベースすることはできず、マージするだけでしょうか。
機能ブランチでの作業は明らかです。それをプッシュしていなければ、マージする代わりにリベースすることができます。私の質問は開発ブランチのみを指しています。
申し訳ありませんが、別の「リベース」の質問ですが、私はそれについて混乱しています。
時々、開発ブランチのコミットをリモート(オリジン)にプッシュします。現在、リベースで常に言及されていることの1つは、「変更をプッシュした場合はリベースしないでください」です。
つまり、開発ブランチをリベースすることはできず、マージするだけでしょうか。
機能ブランチでの作業は明らかです。それをプッシュしていなければ、マージする代わりにリベースすることができます。私の質問は開発ブランチのみを指しています。
自分のローカルリポジトリをリモートリポジトリで複製/更新した人がいない場合は、リベース(および次のプッシュを強制)できます。
他の人がリモートリポジトリからプルし、リベースされたブランチを強制的にプッシュすると、新しい履歴が公開され、より複雑なリセット操作が強制されます(自分のローカルブランチを新しいリモートブランチ履歴にリセットする必要があります。次に、独自のコミットを再適用します)。
パブリックリモートリポジトリの場合、強制的にプッシュすると問題が発生する可能性があります;)。
「ProGit」の本の「ThePerilsofRebase」を読んでください—それは写真で素晴らしい説明を提供します。git-rebase
マニュアルページには、「アップストリームリベースからの回復」のセクションも含まれています。このセクションでは、リベースの影響を受ける可能性のあるすべての人の立場に立つことができます。;-)素敵なASCIIアートも含まれています。
いいえ、「パブリックリポジトリにプッシュされたものをリベースしない」を教義と見なすべきではありません。そのようなリベースがパブリックリポジトリの他のユーザーに明確に示されている場合は、有効なアプローチである場合があります。たとえば、現在のGitメンテナが彼の「pu」ブランチについて言っていることを確認してください(このメモはやや時代遅れであり、このテキストの新しいバージョンでは直接リベースについて言及されていないため、この古いコピーにリンクすることにしました)。
ブランチの「種類」は関係ありません(結局のところ、これは単なる概念であり、gitの場合、ブランチはブランチです)。変更をプッシュしたら、リベースを実行しないでください。そうしないと、コミットのハッシュが変更されます。
プッシュされたコミットをリベースしないでください。-i
ただし、プッシュされていないコミットをリベース( )することはまったく問題ありません。