Git - プッシュされたコミットを別のブランチに移動する 質問する

Git - プッシュされたコミットを別のブランチに移動する 質問する

最近、上司が、既存のアプリケーションを修正して新機能を追加するにあたり、「能力向上のため」にアウトソーシング グループを試してみることにしました。上司が選んだグループはコミュニケーションがうまく取れず、十分な質問をして理解して効果を上げていないのではないかという私の懸念にもかかわらず、私たちは結局そのグループを採用しました。

私たちは、彼らが Git リポジトリ (GitHub でホスト) で共同作業できるように設定しました。彼ら専用のブランチ (TheOutsourcedBranch と呼ぶことにします) を作成し、すべての作業をこのブランチ内で行うように依頼しました。

さらに、私たちは、彼らがどれだけ速く作業しているか、そして(さらに重要なことですが)彼らのコードがどれだけ優れているかを適切に把握できるように、毎日の終わりにコミットをプッシュするように依頼しました。

今日、彼らは初めてプッシュしました。5 つのコミットがあり、すべてマスターにあります。彼らが行った作業を失わずに、コミットをマスターから TheOutsourcedBranch に移動する方法を考えています (ただし、どうせ破棄しなければならないようです)。

ビジュアルリファレンス - オレンジ色の点は彼らのコミット、灰色の点は私のコミットです。

オレンジ色の点は彼らのコミット、灰色の点は私のコミットです。

リベースに関する質問が山ほどあることはわかっています (そして、それがここで私がすべきことかもしれません) が、どれが私の特定のケースに当てはまるのかを判断するのに苦労しています。そして、もしそれが問題になるなら、アウトソーシング グループと私だけが現在リポジトリを実際に使用している唯一の人々です。

前もって感謝します!


編集:探していたものが見つかったかもしれません:Gitを使用して最新のコミットを新しいブランチに移動する

ただし、自分の理解を確認したいと思います。ローカルで、マスターからブランチ (TheOutsourcedBranch) を作成します。これには AH のすべてが含まれます。次に、マスターを C にリセットします。マスターには AC が含まれるようになります。

それが正しいと仮定すると、私にとっては(ローカルでは)問題ありません。しかし、リモート リポジトリ(GitHub)に、物事がどのように展開したかについてのローカル ビューを受け入れさせ、そのバージョンの履歴を破棄させるには、何をする必要がありますか?

これが終わったら、この質問を書き直して、より一般的で有益なものにし、余分な部分を削除できると思います。そうでなければ、おそらく削除したほうが良いと思います。

ベストアンサー1

ブランチを取得するのは簡単です:

git branch their-branch master
git reset --hard master $SHA1_OF_C
git push --force $SHARED_REPO_REMOTE

これにより、履歴が書き換えられます。つまり、 という名前の現在のマスター ブランチと同等の新しいブランチが作成されtheir-branch、次に、ローカル マスターがランダムな SHA1 (... またはブランチ、タグなど) を指すようにリセットされ、最後に、リモート リポジトリ ブランチがローカル ブランチと一致するように強制的に更新されます。

それは実現するその通りあなたが望む状況。

注意: これにより履歴が書き換えられ、古いマスターから構築したユーザーを台無しにする可能性があります。次のマージの問題に注意してください。

リベースは不要または不要です。

(余談ですが、ステージング リポジトリを提供するか、 を使用するように依頼するかgit send-email、GitHub プル リクエストを使用するか、正しく動作するまでマスターにプッシュできないようにすることをお勧めします。要約によると、正しく動作するまでにはしばらく時間がかかるかもしれません。)

おすすめ記事