切り替え - git 初心者




"git commit--amend"を "git commit"の代わりに元に戻す方法 (6)

  1. 最後のコミットを使用して一時的なブランチにチェックアウトする

    git branch temp [email protected]{1}

  2. 最後のコミットをリセットする

    git reset temp

  3. さて、あなたはあなたのコミットと前のコミットのすべてのファイルを持っています。 すべてのファイルのステータスを確認します。

    git status

  4. gitステージからコミットファイルをリセットします。

    git reset myfile1.js (など)

  5. このコミットを再接続する

    git commit -C [email protected]{1}

  6. 新しいコミットにファイルを追加してコミットします。

私は以前のコミットを間違って修正しました。 コミットは、私が特定のファイルに対して行った変更の履歴を保持するために別々であったはずです。

最後のコミットを元に戻す方法はありますか? git reset --hard HEAD^ようなことをすれば、最初のコミットも取り消されます。

(私はまだどんなリモートディレクトリにもプッシュしていない)


ref-log使用してください:

git branch fixing-things [email protected]{1}
git reset fixing-things

以前に修正されたすべての変更を作業コピーにのみ残して、再度コミットすることができます

以前のインデックスの完全なリストを表示するにはgit reflog


あなたがまだコミットメッセージであなたのエディタにいるなら、あなたはコミットメッセージを削除することができ、 git commit --amendコマンドを中止するgit commit --amendます。


あなたはいつもコミットを分割することができます、 manualから

  • 対話型のrebaseをgit rebase -i commit ^で開始します。ここで、commitは分割したいコミットです。 実際には、そのコミットが含まれている限り、どのコミット範囲も行います。
  • アクション "編集"で分割したいコミットをマークしてください。
  • コミットを編集するには、git reset HEAD ^を実行します。 その効果は、HEADが1巻き戻され、インデックスがスーツに従うことである。 しかし、作業ツリーは同じままです。
  • 最初のコミットに含めるインデックスに変更を追加します。 git add(対話型)やgit-gui(または両方)を使ってそれを行うことができます。
  • 現在のコミットメッセージが適切なものであれば、現在のインデックスをコミットします。
  • 作業ツリーがきれいになるまで、最後の2つのステップを繰り返します。
  • git rebase --continueを使ってrebaseを続行します。

これには9年ほど遅れていましたが、同じことを達成すると言われていたこのバリエーションは見られませんでした(これはいくつかの組み合わせです。トップアンサー( https://.com/a/1459264/4642530 ) 。

ブランチのすべての分離ヘッドを検索

git reflog show origin/BRANCH_NAME --date=relative

次に、SHA1ハッシュを探します。

古いSHA1にリセットする

git reset --hard SHA1

その後、それを元に戻します。

git push origin BRANCH_NAME

完了しました。

これにより、あなたは完全に古いコミットに戻ります。

(以前に上書きされた独立したコミットヘッドの日付を含む)


以下のようにして "git commit -amend"を取り消すことができます。

  1. $ git reset --soft HEAD ^
  2. $ git checkout files_from_old_commit_on_branch
  3. $ git pull origin your_branch_name

======================

変更は前のとおりです。 だからあなたは "git commit -amend"のために元に戻すことができます。これで、 "git push origin"を実行して、ブランチにプッシュすることができます





amend