どのように元に戻す"gitコミット--改正"を行う"gitコミット"
質問
って改訂前のコミットするのコミットして別に保歴史の変動によって書かれたものかを特定のファイルです。
があるので、元に戻すことを前回のコミット?い場合、そのようなもの git reset --hard HEAD^
, 最初のコミットも緩和。
してくれてありがとうございますなに押し出されて他のリモートディレクトリ)
解決
あなたがする必要がある何がしかしHEAD
の以前のバージョンと親を持つ、新しいコミット現在HEAD
と同じ内容でコミットを作成することです。次のコミットが異なる現在のブランチヘッドが今ある場所からコミットの上に起こるようにgit reset --soft
は、分岐ポインタを移動します。
# Move the current head so that it's pointing at the old commit
# Leave the index intact for redoing the commit.
# HEAD@{1} gives you "the commit that HEAD pointed at before
# it was moved to where it currently points at". Note that this is
# different from HEAD~1, which gives you "the commit that is the
# parent node of the commit that HEAD is currently pointing to."
git reset --soft HEAD@{1}
# commit the current tree using the commit details of the previous
# HEAD commit. (Note that HEAD@{1} is pointing somewhere different from the
# previous command. It's now pointing at the erroneously amended commit.)
git commit -C HEAD@{1}
他のヒント
だ改正犯:
git log --reflog
注意:を加えても良いでしょう --patch
体を見ることの犯機能再構成に成功しました。.と同じ git reflog
.
そしてリセットヘッドへの前回のcommitを行った微細:
git reset SHA1 --hard
注意: 交換 SHA1おうコミットのハッシュ.また、このコマンド 失 他の未確定の変更ださを隠しています。または、 使用 --soft
代わりに残る最新の変更 そしてコミットします。
そして桜のその他のコミットする必要のあるので
git cherry-pick SHA1
できることが分割を から マニュアル
- 開始ィrebaseとgit rebase-私^には、コミットのコミット分割を行う.実際には、あらゆるコミットの範囲などを含んでいる。
- マークのコミット分割を行うとのアクション"編集".
- で編集するコミット実行gitリセットの頭の^.その効果は、頭rewoundによる一つの指標おります。しかし、ツリーのご滞在も同じです。
- の変化を指標としてのコミットする利用できgit add(おそら対話的に)またはgit-guiは、いずれか(または両方)になる。
- コミットの現在のインデックスは、何らかのコミットメッセージに適します。
- 繰り返し、最後の段階でワーキングツリーです。
- 続きをrebaseとgit rebase--。
たぶん前に改正し、後に修正コミット2を取得するためにgit reflog
を使用することができます。
次に、前改正と後の修正との差分を取得するためにgit diff before_commit_id after_commit_id > d.diff
を使用します。
の前にコミットするためにバックアップする次利用git checkout before_commit_id
そして、あなたがした本当の変更を適用するために最終使用git apply d.diff
ます。
それは私の問題を解決します。
おそらく価値はあなたがコミットメッセージを使用して、エディタに残っている場合、あなたがコミットメッセージを削除することができ、それがgit commit --amend
コマンドを中止しますことを指摘しています。
できない以下の取り消しお git commit —amend
git reset --soft HEAD^
git checkout files_from_old_commit_on_branch
git pull origin your_branch_name
====================================
現在ご変更したりしていけるようになっています。していただく必要がありのまま元に戻すために git commit —amend
できませ git push origin <your_branch_name>
, を押します。
リモートへのコミットをプッシュしている場合は、その後、誤っている、これはあなたの問題を解決しますコミットの変更を修正しました。コミットする前にSHAを見つけることgit log
を発行します。 (これはリモート名前の起源であると想定します)。今ではSHAを使用してこれらのコマンドを発行します。
git reset --soft <SHA BEFORE THE AMMEND>
#you now see all the changes in the commit and the amend undone
#save ALL the changes to the stash
git stash
git pull origin <your-branch> --ff-only
#if you issue git log you can see that you have the commit you didn't want to amend
git stash pop
#git status reveals only the changes you incorrectly amended
#now you can create your new unamended commit
ほとんど9年にこのがんはこの変化挙を成し遂げと同じもふもふをご堪能ください(このような組み合わせがこれらに類似するトップ回答(https://stackoverflow.com/a/1459264/4642530).
検索全て一戸建てのヘッドに支店
git reflog show origin/BRANCH_NAME --date=relative
データベース検索システムのSHA1ハッシュ
リセット旧SHA1
git reset --hard SHA1
そして最後までしっかりと押し込みまします。
git push origin BRANCH_NAME
行われます。
この戻りますの古いコミットします。
その日を含めて事前に上書き一戸建てのコミットヘッド)
精算一時的な支との前回のコミット
git branch temp HEAD@{1}
前回のコミットリセット
git reset temp
現在、すべてのファイルをお持など前回のコミットするチェック状態のすべてのファイルです。
git status
リセット"をコミットからファイルgitます。
git reset myfile1.js
(など)隔このコミット
git commit -C HEAD@{1}
追加とコミットのファイルを新しいコミットする