これは1つの方法であり、もっと簡単な方法があるかもしれません。これは、行った変更がマシン上でのみローカルであり、リモートブランチにプッシュされないことも前提としています。
私たちが持っているとしましょう
master
|
A - B - C' - D'
ここでC'、D'マークは、デプロイしたくない新機能でコミットをマークします。
まず、現在のコミットで新しいブランチを作成します(master):
git branch new_feature
ここで、commit D'、masterおよびへのポインタを指定する必要がありnew_featureます。これは、すでに行った変更を失わないようにするために重要です。
master
|
A - B - C' - D'
|
new_feature
ここで、masterブランチを新しい機能のない状態にリセットします。つまり、コミットします。Bを使用してこれを行うことができますgit reset --hard。
重要:この時点でコミットされていない変更がある場合、それらは失われます。についてのこの優れた記事git resetを読んで、それが実際に何をしているのかを理解することをお勧めします。
git reset --hard B
構造は次のようになります。
master
|
A - B - C' - D'
|
new_feature
ブランチで、masterホットフィックスの変更(commit E)を行い、それらをherokuにプッシュできるようになりました。
master
|
A - B - E
\
C' - D'
|
new_feature
次に、修正プログラムをブランチにマージするか、修正プログラムのnew_feature上にリベースすることができます。
git rebase master new_feature
その結果:
master
|
A - B - E
\
C' - D'
|
new_feature
Pro Gitの本は、Gitを学ぶための非常に優れた情報源であり、無料です:http: //git-scm.com/book。