2

「git commit」を実行した変更をコミット解除したいと思います。

特に、ファイルを指定したいと思います。

例:

> #5 commits ago 
> commit -m "bug fix" A.java
> 
> #bunch of commits occurred
> 
> [command to uncommit] A.java

リポジトリから A.java を削除したくないことに注意してください。基本状態、つまり実行したときの状態に戻したいだけですgit clone repo

ありがとう、ケビン

4

3 に答える 3

3

リベースには注意してください。すでにコミットをプッシュしている場合は、プッシュを強制する必要があり、何をしているのかわからない限り、おそらく問題が発生するでしょう。

git revert $SHAYOUWNATOREVERT不要になったコミットを元に戻すために使用します。これは基本的に、指定されたものを元に戻す「反転」コミットを作成します。

于 2012-10-09T19:20:21.917 に答える
2

A.java にリポジトリ履歴に存在できないプライベート データが含まれていない限り、以前の存在を削除しようとするのではなく、ファイルの削除をコミットする必要があります。

git rm A.java

削除する必要がある機密データがファイルに含まれている場合、ファイルの履歴を削除することは可能ですが、ref を書き換え、強制的にプッシュする必要があり、現在の ref を複製またはプルしたユーザーの側で追加の作業が必要になります。 .

https://help.github.com/articles/remove-sensitive-data

要するに:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch A.java' --prune-empty --tag-name-filter cat -- --all

別のリポジトリまたはブランチからバージョンを復元しようとする場合は、編集して回答を組み込みます。

A.java が変更したファイルであり、利用可能な元のバージョンに戻したい場合、upstream/masterこれにより現在のコピーが置き換えられます。

git checkout upstream/master A.java
于 2012-10-09T18:47:03.593 に答える
2

インタラクティブなリベースを実行して、コミットを削除できます。ただし、後のコミットがそのコミットに依存している場合は機能しない可能性があります。

git rebase -i HEAD~5

適切な行を削除してから、保存して終了します。

リモートにプッシュした場合は、これを行わないでください。

于 2012-10-09T18:44:37.267 に答える