0

私はマスターブランチでコミットを開発しており、「初期コミット」を超えてすべてのコミットを別の開発ブランチに移動し、リリースバージョンのマスターを保持したいと考えています。

現在、私のツリーは次のようになっています。

master: A - B - C - D - E - F

私はそれを次のようにしたいと思います:

development:   B - C - D - E - F
              /
master:      A -----------------

そうすれば、次のようにリリースをマージできます。

development:   B - C - D - E - F --- X
              /                       \
master:      A ----------------------- Y

誰かがこれを行うための最良の方法を提案できますか? 私は似ているが正確ではないケースで他の答えを見たことがありますが、何かを台無しにするチャンスを取りたくありません。

4

2 に答える 2

6

簡単に言うと:

(on master)
git branch development
git reset --hard A
于 2011-07-17T07:44:01.360 に答える
0

最初にコミット F の新しいブランチを作成します (ブランチ マスターでの最後のコミット):

git checkout -b dev master # or directly using the commit hash:
git checkout -b dev SHA1_OF_F # if master is currently checked out:
git checkout -b dev

次に、マスター ブランチを元に戻します (作業ツリーを破棄せずに)。

git branch -f master SHA1_OF_A

作業を続けたい場合は、マスターを再度チェックアウトします。

git checkout master

作業ツリーを気にしない場合 (クリーンです。つまり、コミットされていない変更もステージングされていない変更もありません。 @manojlds の回答でgit reset --hard提案されているように使用できます。

これにより、マスター ブランチの履歴が変更されます (つまり、整理されます)。そのため、その結果を必ず理解してください。変更が公開リポジトリに既にプッシュされている場合、他のユーザーは開発コミットが既に含まれmasterているため、ブランチもリセットする必要があります。

于 2011-07-17T08:01:44.827 に答える