[解決済み] Git Revert の使用方法
質問
どのように
git revert
を使用していますか?
これは重複する質問のように聞こえるかもしれませんが、人々がこれを質問すると、多くの場合、その回答は
git reset
のように
GitでSHAハッシュによるコミットへの復帰?
そして、誰かが
git reset
を使うべきだという答えが返ってきます。
git revert
のように
Git - ロールバックの方法
いつの間にか8人の人が登場し、それぞれ独自の方法でOPの尻拭いをするのですが、そのすべてがあなたの頭上にあるのです。
というわけで、この本の概要を説明し、「ダミーズガイド」を書いてみましょう。
git revert
.
シナリオ:masterに2回コミットし、その内容が悪い。プッシュしたら、他の人があなたの悪い変更点を手に入れた。
それを元に戻したい。ウィザードやパッケージマネージャがあちこちのものを大量に変更したとします。
これがソース管理というものです。きっと簡単なんでしょうね。
さて、あなたが使うのは
git revert
が、どのように?
と実行した後
git revert
の後に、何か他のことをする必要がありますか?revert が行った変更をコミットする必要があるのか、それとも revert が直接レポにコミットするのか、それとも何か?
明らかに、もう一度プッシュする必要がありますし、おそらくチームに自分のボールアップを発表することになるでしょう。
どのように解決するのか?
git revert は新しいコミットを作成します。
git revert
は、単に既存のコミットと反対の新しいコミットを作成します。
これは、元に戻されたコミットが存在しなかったかのように、ファイルを同じ状態で残します。たとえば、次のような簡単な例で考えてみましょう。
$ cd /tmp/example
$ git init
Initialized empty Git repository in /tmp/example/.git/
$ echo "Initial text" > README.md
$ git add README.md
$ git commit -m "initial commit"
[master (root-commit) 3f7522e] initial commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
$ echo "bad update" > README.md
$ git commit -am "bad update"
[master a1b9870] bad update
1 file changed, 1 insertion(+), 1 deletion(-)
この例では、コミット履歴に2つのコミットがあり、最後の1つは間違いです。git revertを使用します。
$ git revert HEAD
[master 1db4eeb] Revert "bad update"
1 file changed, 1 insertion(+), 1 deletion(-)
ログには3つのコミットが記録されます。
$ git log --oneline
1db4eeb Revert "bad update"
a1b9870 bad update
3f7522e initial commit
つまり、起こったことの履歴は一貫しているのに、ファイルはまるで悪いアップデートがなかったかのような状態になっているのです。
cat README.md
Initial text
元に戻すコミットが履歴のどこにあるかは関係ありません (上の例では最後のコミットが元に戻されます。どのコミットも元に戻すことができます)。
終了時の質問
<ブロッククオートこの後、何かする必要がありますか?
A
git revert
は
ちょうど
他のコミット、例えばリモートにプッシュして、他のユーザーがその変更をプル/フェッチ/マージできるようにすれば完了です。
revert が行った変更をコミットする必要がありますか、それとも revert が直接レポにコミットするのですか?
git revert
は
はコミットです。単一のコミットを取り消すことがあなたのやりたいことだと仮定すれば、余分な手順はありません。
もちろん、再度プッシュする必要がありますし、おそらくチームにもアナウンスする必要があるでしょう。
確かに - もしリモートが不安定な状態なら - チームの他のメンバーに、修正を得るためにプルする必要があることを伝えるのは正しい行動でしょう (コミットの取り消し) 。)
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] ファイルをリセットしたり、特定のリビジョンに戻したりするにはどうすればよいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Git:コミットに何も追加されていないが、未追跡のファイルが存在する
-
[解決済み] git rebase fatal: 必要なリビジョンは1つです。
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
[解決済み】ローカルGitブランチとそのリモートブランチを比較する方法
-
[解決済み] ERROR: リモートレポ 'origin' のクローン作成に失敗しました。
-
[解決済み] LFはgitでCRLFに置き換えられます - それは何ですか、そしてそれは重要ですか?[重複]。
-
[解決済み] Git - node_modules フォルダをどこでも無視するようにしました。
-
[解決済み] git stashを元に戻す
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] GitでSHAハッシュによるコミットの取り消し?重複