これは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。