質問

私の問題は、ファイルを変更したことです。これは私のテストライン用です'そしてファイルを保存して、次のコマンドを発行しました

 git status

 # On branch master
 # Changed but not updated:
 #   (use "git add <file>..." to update what will be committed)
 #   (use "git checkout -- <file>..." to discard changes in working directory)
 #
 #  modified:   README
 #
 no changes added to commit (use "git add" and/or "git commit -a")


 git add README

 git commit -a -m 'To add new line to readme'

コードをGitHubにプッシュしませんでしたが、このコミットをキャンセルしたいと思います。

このために使用しました

   git reset --hard HEAD~1

しかし、私は新しく追加されたラインを失いました」これは私のテストライン用です'readmeファイルから。これは起こらないはずです。コンテンツが必要です。 コンテンツを保持して私のローカルコミットをキャンセルする方法はありますか?

役に立ちましたか?

解決

使用するだけです git reset なしで --hard 国旗:

git reset HEAD~1

PS:UNIXベースのシステムで使用できます HEAD^ これに等しい HEAD~1. 。 Windowsで HEAD^ なぜなら動作しないから ^ ラインの継続を信号します。したがって、あなたのコマンドプロンプトはあなたに尋ねるだけです More?.

他のヒント

使用する --soft それ以外の --hard 国旗:

git reset --soft HEAD^

コミットの最中に(つまり、編集者の既に)、最初のすべての行を削除することでキャンセルできます #. 。それはコミットを中止します。

したがって、すべての行を削除してコミットメッセージが空になるように、次にファイルを保存できます。

It should look like this.

その後、言うメッセージが表示されます Aborting commit due to empty commit message..

編集:

削除することもできます 全て 行と結果はまったく同じです。

VIMのすべての行を削除するには(デフォルトエディターの場合)、エディターに入ったら、タイプ gg 最初の行に行くために dG すべての行を削除します。最後に、ファイルを書き込み、終了します wq そして、あなたのコミットは中止されます。

最初にすべきことは、コミットメッセージを削除する前にローカルの変更を維持するかどうかを判断することです。

使用する git log 現在のコミットメッセージを表示するには、を見つけます commit_id 削除したいコミットではなく、削除したいコミット。

ローカルに変更されたファイルを保持し、コミットメッセージを削除するだけの場合:

git reset --soft commit_id

ローカルに変更されたすべてのファイルとコミットメッセージを削除する場合:

git reset --hard commit_id

それが違いです 柔らかい難しい

パラメーターのいずれかを使用して、gitリセットを実行する際に、次のインデックス(次のコミットになるファイルのセット)とワーキングディレクトリを使用して何をすべきかをgitに伝えることができます。

--soft: :インデックスと作業ディレクトリは変更されませんが、コミットのみがリセットされます。

--mixed: :これにより、インデックスがヘッドに一致するようにリセットされますが、ワーキングディレクトリには触れられません。すべての変更は、作業ディレクトリにとどまり、変更されたまま表示されます。

--hard: :ヘッドに合わせてすべて(コミット、インデックス、作業ディレクトリ)をリセットします。

あなたの場合、私は使用します git reset --soft インデックスとワーキングディレクトリの変更された変更を維持するため。必ず確認してください これはアウトです より詳細な説明。

以下のコマンドを使用します:$ gitリセットヘッド〜1この後、以下の応答のように戻るものをファイルを表示することもできます。

リセット後のステージングされていない変更:mアプリケーション/config/config.php m application/config/database.php

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top