私は機能ブランチに取り組んでいて、私は git checkout -b feature/other-feature
、いくつかの作業を行い、それをコミットしてからgithubのorigin feature / other-featureにプッシュしました。
からプルリクエストを作成したときgithubの他の機能ブランチ私はそれが元の機能ブランチからのコミットの負荷を示していることに気づいた - コミットは元のブランチから開発するために当然マージされるべきです。
私が間違ったことは省略することだったと思います git checkout develop
私がする前に git checkout -b feature/other-feature
だから私はこの状況を修正するために私がやりたいと思うのは開発に他の機能をリベースすることです。
しかし、私が自分の過ちを原因とし、他の人々がこのリポジトリのクローンを持っていることを考えると、リベースするか何か他のことをする必要がありますか?
回答:
回答№1の場合は3はい、あなたはあなたのコピーをリベースする必要があります feature/other-feature
。ただし、この場合は単純な git rebase develop
おそらく機能しないでしょう。直接オフにするのではなく、別の機能ブランチから分岐したからです。 develop
。あなたは使用する必要があります rebase --onto
:
git rebase --onto develop feature/earlier-feature feature/other-feature
ここに、 feature/earlier-feature
オリジナルを消したときにチェックアウトした機能ブランチです。
git checkout -b feature/other-feature
.
このリベースは、
- でコミットしてください
feature/other-feature
それは ない にfeature/earlier-feature
. - これらのコミットをに再適用してください。
develop
.
あなたは変更されたブランチになってしまうはずです feature/other-feature
これは今に基づいています develop
.
ノート
- リベースのため、ブランチをGitHubリポジトリに強制プッシュする必要があります。これは問題ではありません、 あなたのリポジトリの唯一のクローンがある限り。あなたが他の人とレポを使用する場合、物事はより困難です(下記参照)。
- リベースは競合を引き起こす可能性があります。手動で解決する必要があります。
- さらに読むこと:リベースの背後にある概念との意味
rebase --onto
"Pro Git"という本でよく説明されています。 3.6章を参照してください。 Gitの分岐 - リベース.
他の人があなたのリポジトリを複製した場合
あなたが書く
しかし、私は自分の過ちを起源に追いやり、他の人々は このレポのクローン、私はリベースするか何か他のことをする必要がありますか?
あなたはまだ上記のようにリベースすることができます。ただし、リベースしたブランチを古い名前で強制プッシュしてはいけません。代わりに、ブランチのコピーを作成してください。
git checkout -b feature/other-feature-2 feature/other-feature
これで新しいブランチが作成されます feature/other-feature-2
それはの正確なコピーです。 feature/other-feature
。その後、新しいブランチをリベースして、新しい名前でプッシュすることができます。 それから皆にそれを言う feature/other-feature
に置き換えられました feature/other-feature-2
、削除 feature/other-feature
GitHubで。みんなに言わなければいけないのは、リベースの代金です:-)。