プロジェクトのアップグレードに取り組んでいます。変更を行う前に新しいブランチを作成するのを忘れていました。
私は数回コミットしました:
オリジナル -> コミット -> コミット -> コミット -> 現在
現在、元のコピーに緊急のバグを修正する必要があるため、元のコピーに基づいて変更したいと考えています。変更を元に戻すと、すべての作業が失われる可能性があると考えています。まだ変更を覚えていますか?
プロジェクトのアップグレードに取り組んでいます。変更を行う前に新しいブランチを作成するのを忘れていました。
私は数回コミットしました:
オリジナル -> コミット -> コミット -> コミット -> 現在
現在、元のコピーに緊急のバグを修正する必要があるため、元のコピーに基づいて変更したいと考えています。変更を元に戻すと、すべての作業が失われる可能性があると考えています。まだ変更を覚えていますか?
master
今がを指していて、あなたがに戻っnow
て指したいと仮定して、私は次のことをします。master
original
// Make sure you are on master, thus looking at 'now'
git checkout master
// Make a new branch pointing at 'now'
git branch new_feature
// Reset 'master' back 4 commits to 'original'.
git reset --hard HEAD~4
これにより、マスターは希望の場所に戻り、修正を加えて新しいコミットを行うことができます。次に、を実行して新しい機能の作業を続けることができますgit checkout new_feature
。次に、機能の準備ができていることを確認し、マスターにマージして戻すことができます。
通常、この理由でマスターで新しい機能を開発することは望ましくないため、新しい機能をすぐにマスターにマージすることはできますが、代わりに、git checkout new_feature
マージする前に、完了するまで作業を続けることをお勧めします。
これがあなたにできることです。まず、現在の作業を指す新しいブランチを作成します。
git branch project_upgrade
(コミットされていない変更がある場合は、それを行う前にコミットしてください。)
次に、master
ブランチにいる間に、変更前に戻ってリセットします。
git reset --hard <SHA of original commit>
master
これによりブランチはリセットされますが、ブランチはproject_upgrade
元の作業を指すようになります。(これによりすべてのファイルがリセットされるため、分岐する前にコミットされていない変更がないことを確認することが重要です。これにより、すべてのアップグレード作業が、作成した分岐が指すコミットに保存されます。)
次に、バグ修正を行います。その後、アップグレード作業を次の場所にマージできます。
git merge project_upgrade