2012-03-13 10 views
0

githubで邪悪なことをしました:rebaseを使い、次に--forceを押します。これは、コミットに関連付けられた名前を変更し、それをリポジトリに反映させたいからです。git repo *をクリーンアップし、悪い行為の後にコミットを保存する

これは他の場所で警告されているように、これは他の上流または下流のreposに影響を与える可能性があります。

私が見ている結果は、マージした後に上流のリポジトリにコミットメッセージが重複していることです。

我々持って、次の構造:

メイン(かなり非アクティブ) - 悪(非常にアクティブ) - (非常に非アクティブ)その他

私の質問です:私は良好な状態にメイン得るのですかすでにコミットが数件ある場合アクションの私の提案の計画は次のとおりです。メイン

  • Gitはリセット

    • gitのクローン[前マージコミット]
    • のgitのstashポップ
    • --forceのgit隠し
    • Gitのプッシュgit push

    私は、(a)問題を解決し、(b)そうでないことを確かめることなくこれを行うのが少し嫌ですより多くの災害を作り出します。それは自身のリセット/プッシュを行って以来、「悪」レポジトリは非常に活躍している、と私は次のように、彼らが何かをする必要があることを前提としていますリセット

    • gitの
    • のgitを引っ張っ[最大コミット-that-まだ存在してオンメイン]
    • Gitのスタッシュ
    • Gitのプッシュ--force(主に存在する状態に「悪」戻す)
    • (主からのものを引き出し、通常マージ)
    • git stash pop
    • git push(ローカル変更を適用する)

    これは正しいですか?

    最後に、 'Evil'リポジトリには、リセット/プッシュを行った後に多数のコミットがあります。メインと再同期するときにすべてのコミットメッセージが確実に保持されるようにする方法はありますか?

  • +0

    git-fetchとgit-cherry-pickの組み合わせがより良い答えかもしれないと私は思っていますが、Mainリポジトリにすべてのアップデートがあり、うまく見えたら、すべての子供。または、副詞:「悪」をソースと履歴の最新かつ正確な表現にして、それを強制的に(何とか?)メインに移します。 – RabidMutant

    答えて

    1

    あなたが説明したことから判断すると、おそらくあなたの最善の策は、あなたのコメントに言及された2番目の可能性です - つまり、 "Evil"を可能な限り正確に修正し続け、 "悪がどこにあるかをリセットする。川下のユーザーは、 "Evil"から "新しい世界秩序"に(--ontoフラグを使用して)リベースすることができます。

    +0

    こんにちは、返信いただきありがとうございます。 – RabidMutant

    +0

    あまりにも早くリターンを打つ.....それが良い状態になったらEvilにマッチするように上流のレポジトリ(Main)をリセットする簡単な方法がありますか? – RabidMutant

    +0

    Evilリポジトリのクローンから、 'git push --force

    master'(' master'が問題のブランチであると仮定します)。 – Amber

    関連する問題