/ /分岐元のgitブランチを変更するにはどうすればいいですか? - git、version-control、github、分岐とマージ

分岐したgitブランチをどのように変更するのですか? - git、バージョン管理、github、ブランチング+マージ

私は機能ブランチに取り組んでいて、私は 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.

このリベースは、

  1. でコミットしてください feature/other-feature それは ないfeature/earlier-feature.
  2. これらのコミットをに再適用してください。 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で。みんなに言わなければいけないのは、リベースの代金です:-)。