ローカル リポジトリと Github のリポジトリの両方でファイルに加えた最後の変更を元に戻したいと考えていました。( origin
)
誰かがそれをやっている投稿/ブログを教えてください。
変更をコミットするために行った手順は次のとおりです。
git add -A
git commit -m "changed header"
git push origin master
ローカル リポジトリとオリジンの両方で、最後の変更を元に戻すにはどうすればよいですか。
ハード リセットを実行して、不正なコミットを破棄します。
git reset --hard HEAD^
強制プッシュ
git push -f origin master
注:reset --hard
そのコミットへの参照を維持しているブランチがまだどこかにない限り、最新のコミットで行った変更はすべて破棄されます。ただし、近いうちに必要になった場合に備えて、以前のHEAD
ものはまだ reflog にあります。安全を確保するために、最初にバックアップ ブランチを作成します。
git branch backup master
すべてがうまくいけば、git branch -D backup
後でできます。
すでにプッシュされたコミットやリモート ブランチの履歴を変更することはお勧めしません。そうする場合、他の人の作業を台無しにする可能性があります。または、少なくとも他の人の作業をリモート ブランチに統合するのが難しくなります (origin/master
この場合)。
の履歴を操作せずにコミットした内容を元に戻す方法はorigin/master
、以前に行ったことを元に戻す新しいコミットを作成し、その新しいコミットをプッシュすることです。
最初に、前回のコミットで行った変更とは逆の内容を含むパッチを作成します。
git diff HEAD HEAD~1 > revert.patch
そのコマンドを発行することで、Git に、HEAD から HEAD~1 に到達する方法を説明するパッチ ファイルを作成するように指示します (つまり、最後のコミットから最後から前のコミットまで)。
次に、そのパッチを適用します。
git apply revert.patch
これにより、そのパッチが適用され、作業コピー内のファイルが変更されます。ここでパッチ ファイルを削除できます ( revert.patch
)。
これで、作業コピーは最後のコミットの前の状態に戻りましたが、これらの変更はまだ Git リポジトリには反映されていません。それらを追加してコミットする必要があります。(git gui
またはgit add
/ git commit
、または変更をコミットするために通常使用する方法を使用します)。
新しいコミットが生成されたら、プッシュするだけです
git push origin master
今、あなたは持っているでしょう
A' (master) - (origin/master)
|
B
|
A
A'
元に戻したいコミットと同じファイルを含む、生成した新しいコミットはどこにありますか ( A
)