私はGitをかなり頻繁に使用していますが、まだ初心者です。
時々、私は間違いを犯しますが、それだけを見つけます後私はそれをコミットしました。その時点で、私は通常、インターネット上で長い時間をかけて、(プッシュする前に)それを取り除くために使用する必要のあるコマンドを探す必要があります。
それが起こるたびに、私は私が通常遭遇する4つの用語の違いは何であるか疑問に思います:
いよいよ、これらの違いを一度だけ学ぶ時が来ました。彼らは何ですか?
revertおよびamendという用語は、Gitで明確に定義された意味を持っています。対照的に、rollbackおよびundoには、そのような明確な意味はありません、および解釈にオープンです。
...(現在のブランチで)別のコミットが導入した逆の変更を適用する新しいコミットを作成することを意味します。これは、破棄(つまり、履歴の書き換え)を伴わないため、すでに他のユーザーと共有されているリポジトリの問題を修正するための推奨されるアプローチです。
<commit>
で識別されるコミットを元に戻すには、単に実行します
git revert <commit>
...「現在の」コミットを同じ親を持つ新しいコミットに置き換えることを意味します。詳細については git commit --amendは正確にどのように機能しますか?
を注意
特定のブランチの最後のコミットのみを修正できます。古いコミットを書き直すには、大きな銃を引き出す必要があります(インタラクティブなリベースなど)。
コミットを修正するには、必要なすべての変更を加えてステージングしてから、
git commit --amend
現在のブランチの最後のコミットが修正されるため、ここでコミットを指定する必要はありません。次に、エディターがポップアップし、コミットメッセージを変更する機会が与えられます。
...通常は、ローカルの変更を破棄(または隠蔽)し、ブランチをコミットにリセットすることを意味します(または、単にコミットをチェックアウトしますが、それは、物事が混乱し始めたコミットの前に、分離されたHEAD状態になります)。使用する
git reset <commit-before-things-started-to-go-belly-up>
...コンテキストに応じて、
変更を元に戻す:git checkout
、git revert
、git reset
、git clean
git revert
:このコマンドは、コミットの変更を元に戻します。ログに実績を残します。git reset
:このコマンドは、コミットの変更を元に戻します。ログに実績を保持しません。つまり、元に戻されたコミットにリセットされます。 注:これは破壊的な機能です。このコマンドの使用には注意する必要があります。
git reset --soft HEAD^
最後のコミットを元に戻し、ステージングに変更を加えますgit reset --hard HEAD^
最後のコミットとすべての変更を元に戻すgit reset --hard HEAD^^
最後の2つのコミットとすべての変更を元に戻すgit commit --amend
ここで、amendは、最後のコミットに追加することを意味します。コミットするファイルを追加するのを忘れることがありました。たとえば、abc.txtファイルを忘れた場合、次のように追加できます。git add abc.txt
およびgit commit --amend -m "New commit message"
git --amendgit --amendコマンドは、別のGitリポジトリのパブリックブランチにプッシュされていないコミットに対してのみ使用する必要があります。 git --amendコマンドは新しいコミットIDを作成し、人々はすでに既存のコミットに基づいて作業を行っている可能性があります。この場合、新しいコミットに基づいて作業を移行する必要があります
git revertgitrevertコマンドを使用してコミットを元に戻すことができます。このコマンドは、コミットの変更を元に戻します。このようなコミットは、変更が取り消されたことを文書化するのに役立ちます。
これが[ここにリンクの説明を入力] [1]です
[1]: Gitリポジトリを特定のコミットにロールバック(リセット)するにはどうすればよいですか? ロールバック手法について