0

次のトポロジがあるとします。

X--X--X--             origin/master
    \     
     \     
      \--X--X--X--             b1 (private - not to be shared)
             \
              \
               \--X--X--X--    b2 (to be shared upstream)

b1 ではなく b2 のみを共有したいので、次のようにします。

git rebase --onto origin/master b1 b2
git push origin b2

リベースを使用せずにローカル履歴を変更せずに同じ目標を達成することは可能ですか? (b2 sans b1 コミットのプッシュ)

4

2 に答える 2

3

いいえ、それは不可能です。一部のb1コミットはb2の履歴にあるため、履歴を書き直してそれらを削除する必要があります。

于 2012-05-18T12:38:14.457 に答える
2

個々のファイルではなく、コミット オブジェクト全体を考えると役立ちます。b2 に到達するには、2 行目のいくつかのコミット オブジェクトが必要です。

A--B--C--                  master
    \
     \--D--E--F--          b1
            \
             \--G--H--I--  b2

I コミットを取得するには、すべてのコミット オブジェクト A、B、D、E、G、H、I が必要です。

したがって、B から G をリベースしない限り、D、E コミットを除外することはできません。

于 2012-05-18T14:58:31.517 に答える