2017-01-23 7 views
0
私が持っている4つのコミットのうちの1つのパッチを作成する方法、ログ?、それはに簡単になるように

は、のは言わせてのdevのサーバーでgitのログがその例から基づいて、この異なるコミットから1つのパッチを作成する方法は?

aaaa - mine 
bbbb - other dev 
cccc - another dev 
dddd - mine 
eeee - another dev 
ffff - mine 
gggg - mine 

のようになります私のコードをステージングサーバーにプッシュします。

ので、私はすでにかなり多くのだ

git show gggg > first.patch 
git show ffff > second.patch 
git show bbbb > third.patch 
git show aaaa > fourth.patch 

をすれば。 我々の現在のプロセスがこの

1と同様である))コミット) 2を開発し、サーバ 3 devのためのコード)を1回試験し、製品の所有者によって確認を押し、 4をステージングするためのパッチを作成する) 5ステージングにパッチを適用しますQAテストが検証された後、生産に移行します。

私のコミットを組み合わせて1つの.patchファイルを作成するにはどうすればいいですか?

+0

これらのすべてのコミットを含むブランチを作成できます。このブランチで 'git rebase -i HEAD〜LASTCOMMITYOUWANT'を実行すると、1人のコミットにコミットしたすべてのエディタを使用し、エディタで終了します。その後、それは 'git format-patch'を実行するためのケーキです。 – Oz123

答えて

2

私が行うことは、変更だけでブランチを作成するためのインタラクティブなリベースです。 bigここで注意しなければならないのは、これを行う際に、テストされていない新しい状態のコードを作成することです。しかし、それはあなたの質問に内在しているので、それが本当にあなたがやりたいことならば:

私の助言は、新しいブランチを作成し、それをリベースすることです。新しいブランチは、このプッシュに合わせた別の履歴を表します。

git checkout aaaa 
git checkout -b staging_branch 
git rebase --interactive gggg^ 

リベース先のリストを持つエディタが表示されます。あなた以外のコミットの行を削除してください。あなたが望むのであれば、(すべてのものを選ぶのではなく)あなたが保っているコミットを押しつぶすこともできますが、それは本当に重要ではありません。

そこからstaging_branchをステージングサーバーにプッシュできます。または、実際にパッチを適用する場合は、git diff(またはコミットを押し縮めた場合はgit show)を使用して取得できます。

+0

これが何かをする必要がある場合は、コミットラインを維持できる分岐戦略を見ることを強くお勧めします他の開発者の作業と組み合わせる準備が整うまで、別々にしてください。 –

関連する問題