Gitでは、 `git show commit__id –name-only`を使用して、リモートリポジトリにプッシュしようとしているすべてのコミットされたファイルを一覧表示できます。
__P.S `git status`はコミットされたファイルを表示しませんでした。
1.ケーススタディ
以下の場合、gitが誤って不要な `target/** `ファイルを追加してあまりにも多くコミットした場合、ローカルでコミットされたファイルを削除する方法は? (リモートのgitサーバにプッシュしていない)
ターミナル
$ git commit -m "test uncommit" [master f5f3fa6]test uncommit 7 files changed, 3603 insertions(+) create mode 100644 src/main/java/com/mkyong/benchmark/BenchmarkMap.java create mode 100644 target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__forwardLoop__jmhTest.java create mode 100644 target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType.java create mode 100644 target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B1.java create mode 100644 target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B2.java create mode 100644 target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B3.java create mode 100644 target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__reverseLoop__jmhTest.java
2.解決策
2.1 `git log`はすべてのcommit
idを表示し、最初のものは最後のcommit
idです。
ターミナル
$ git log commit f5f3fa6e012adf5d2caf2e1310421ad8258950d3 (HEAD -> master) Author: mkyong <-@gmail.com> Date: Mon Nov 26 16:02:00 2018 +0800 test uncommit commit 3250f725962ba12b6695c083895dd4c3533545a2 (origin/master) Author: mkyong <-@gmail.com> Date: Mon Nov 25 15:00:17 2018 +0800 init commit b28f3199e10d2aed5426342f6ed172ba7f710483 Author: mkyong <-@gmail.com> Date: Fri Nov 23 17:27:25 2018 +0800 update readme
2.2 `git show commit
id –name-only`は、指定されたcommit
idでコミットされたすべてのファイルを表示します。
ターミナル
$ git show f5f3fa6e012adf5d2caf2e1310421ad8258950d3 --name-only commit f5f3fa6e012adf5d2caf2e1310421ad8258950d3 (HEAD -> master) Author: mkyong <-@gmail.com> Date: Mon Nov 26 16:02:00 2018 +0800 test uncommit src/main/java/com/mkyong/benchmark/BenchmarkMap.java target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__forwardLoop__jmhTest.java target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType.java target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B1.java target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B2.java target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B3.java target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__reverseLoop__jmhTest.java
2.3最後のコミットを `git reset –soft HEAD〜1`で元に戻し、間違ってコミットされたファイルをステージング領域に戻します。
ターミナル
$ git reset --soft HEAD~1 $ git status On branch master Your branch is up to date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: src/main/java/com/mkyong/benchmark/BenchmarkMap.java new file: target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__forwardLoop__jmhTest.java new file: target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType.java new file: target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B1.java new file: target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B2.java new file: target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__jmhType__B3.java new file: target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkForwardReverseLoop__reverseLoop__jmhTest.java new file: target/generated-sources/annotations/com/mkyong/benchmark/generated/BenchmarkLoop__jmhType.java Untracked files: (use "git add <file>..." to include in what will be committed) .idea/.... === 参考文献 . https://git-scm.com/docs/git-log[gitログのドキュメント] . https://git-scm.com/docs/git-show[git show documentation] link://tag/git/[git]link://タグ/git-commit/[git commit]link://tag/git-log/[git log]link://tag/git-show/[git show]