2009-11-03 5 views
15

時々私は一度にいくつかの枝を使って作業しています。私はmaster、release-1.1、experimentalというブランチを持っているとします。私は新しいファイルを作成するか実験的に変更して、その1つの変更を他のブランチに適用したい。1回のコミットをマージするにはどうすればよいですか?

gitでこれを行うことはできますか?コミットを別のブランチにマージするだけで、gitは自動的に「早送り」し、間にコミットを含めます。しかし、このユースケースを処理するには何らかの方法が必要です。

答えて

22

あなたがしたいことは、cherry pickingと呼ばれます。あなたは桜選ぶことができます単一次のコマンドを使用してコミット:

$ git cherry-pick <commit hash or name> 

これはあなたの現在のブランチにコミットのみをそのからの変更を組み込む予定。ただし、これにより、という新しいコミットが作成されることに注意してください。この新しいコミットはチェリーピックされたコミット(と同じコミット日付と作者)と全く同じ変更を行いますが、技術的には新しいコミットであるため、新しいコミットとして表示されます(例:gitk)。 。また、変更を確認する各ブランチに対してチェリーピックを実行する必要があります。

4

ソリューションが、残念ながらあなたはかなりの変更を行う前を知っておく必要がある1つは、これだけの変更のために別のブランチを作成することです(いわゆる「トピックブランチ」と呼ばれる)、最古の枝や最古のコミットをオフこのコミットが必要なブランチにこのブランチをマージしてください。

場合によっては、メンテナンスブランチを変更し、メンテナンスブランチを安定ブランチにマージし、安定ブランチを開発ブランチにマージすることもできます。

はJunio C浜野(Gitのメンテナ)は自身のブログでこれについて書いた:Resolving conflicts/dependencies between topic branches early

+0

あなたはそのブログエントリへのリンクを持っていますか?私はそれが役に立つと思う、Gitの権限から来ている。 –

+0

おそらくそのブログのエントリ? http://gitster.livejournal.com/27297.html – VonC

+0

チェリーピッキングがこれよりも適切と思われます。申し訳ありません。 –

関連する問題