Gitの分岐とマスターからのコードの削除


0

1つのgit [master]ブランチを持つコードベースに取り組んできました。

ここで、1つの機能に対して実際にブランチを作成し、その機能をマスターブランチから削除する必要があります。

だから私たちは現在

[master] <- one branch with feature 1 and feature 2

しかし、私はそれをこのように見せたいです

[master]    <- only feature 1
[feature-2] < - feature 1 and feature 2 (what the master is now)

これを行う最良の方法は何ですか?私が考えることができる唯一の方法は[feature-2]、マスターからブランチを作成し、マスターに不要なコードをすべて削除することです。

ただし、機能1でバグ修正などが行われる可能性があります。これらは[master]、で実行してからにマージする必要があります[feature-2]

2つの機能が多少同時に開発されているため、古いコミットから分岐することもできません。

このシナリオをうまく処理する方法はありますか?

ありがとう

回答:


1

コミットしたばかりの以前のコミットがある場合feature-1は、マスターブランチをそのコミットに向けることができます。

よると、この、あなたが実行することにより、それを達成することができます:

git checkout master
git reset --hard <hash_of_the_commit>

そうでない場合、それを達成する唯一の方法は、あなたが言ったことを実行し、不要なコードを分岐して削除することだと思います。

2番目の質問に関しては、おそらく別のブランチで修正プログラムを開発し、必要な他のブランチに適用できます。

git checkout master
git merge hotfix
git checkout feature-1
git merge hotfix
git checkout feature-2
git merge hotfix

あなたはこの詳細を見ることができ、ここであなたが求めている正確に何を説明しています。


一緒に開発されたので、私は最初のものをすることはできません。多分、機能2のコードを削除する必要があると思います。コミットしてからブランチし、機能2のすべてのコードをthastブランチに再追加します。唯一の問題は、ファイルに対する敵意をすべて失うことです。
noShowP

マスターで両方の機能をまだコミットしていない場合は、変更を単に隠して(man git-stash)、別のブランチに保存することができます。残念ながら、すでにコミットしている場合、マスターブランチに必要な迷惑行為をすべてやり直す以外の選択肢はありません。
nKn

うん、それは面倒だと思う。最初から悪い計画!ああ、とにかくありがとう。
noShowP

0

最も論理的な方法は、masterブランチの両方の機能の安定したコード、ブランチの機能1に関連する開発コード、およびfeature-1別のブランチの機能2のコードを保持することだと思いますfeature-2。これらのブランチでコードが安定したら、それらをにマージできますmaster

ブランチを作成し、それを行うためにはfeature-2、その後にmasterないgit reset --hard最後に機能2を開始する前にコミットし、ブランチを作成しますfeature-1


最後のコミットはありません。両方の機能が同時に開発されたため、コミットが同時に発生します。つまり、昨日は機能1にコミットした人もいれば、機能2にコミットした人もいます。
noShowP

したがって、機能1コードと機能2コードを初期コードから分離できる場合は、それらのコードを切り取り、機能ごとにブランチを作成し、機能1ブランチにチェックアウトし、そのコードを過ぎてから、機能2に対して同じことを行います。ブランチのコードを統合する準備ができたら、それをにマージできますmaster
ハムザアブバッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.