166

Git でコミットされたファイルを元に戻す可能性はありますか? コミットを GitHub にプッシュしましたが、プッシュしたくないファイルがあることに気付きました (変更を完了していません)。

4

7 に答える 7

206

更新:より安全な方法を追加

好ましい方法:

  1. ファイルの以前の (変更されていない) 状態を確認します。ダブルダッシュに注意

    git checkout HEAD^ -- /path/to/file
    
  2. コミットします:

    git commit -am "revert changes on this file, not finished with it yet"
    
  3. 押してください。力は必要ありません:

    git push
    
  4. 未完成の作業に戻り、もう一度実行します (上向き矢印を 3 回):

    git checkout HEAD^ -- /path/to/file
    

実質的に「コミット解除」:

リポジトリ HEAD の最後のコミットを変更するには、誤ってプッシュされた作業を難読化しますが、同僚はすでにプルしている可能性があり、白髪が生え、ローカル ブランチ ヘッドとの調整に多くの時間を費やす可能性があります。中央のもので:

最後のコミットからファイルの変更を削除するには:

  1. ファイルを最後のコミット前の状態に戻すには、次のようにします。

    git checkout HEAD^ /path/to/file
    
  2. 元に戻したファイルで最後のコミットを更新するには、次のようにします。

    git commit --amend
    
  3. 更新されたコミットをリポジトリにプッシュするには、次のようにします。

    git push -f
    

本当に、前述の推奨される方法を使用することを検討してください。

于 2014-02-26T12:25:20.243 に答える
116

リモート リポジトリからファイルを削除する場合は、最初に --cache オプションを使用してプロジェクトからファイルを削除してから、プッシュします。

git rm --cache /path/to/file
git commit -am "Remove file"
git push

(これは、ファイルがいくつかのコミットの前にリモート リポジトリに追加された場合でも機能します) プッシュしたくないファイル拡張子を .gitignore に追加することを忘れないでください。

于 2018-07-19T08:33:26.863 に答える