Gitで実行されたコマンドの履歴またはログ


96

WindowsのGitで使用したコマンドを追跡する方法はありますか?リポジトリに適用したすべてのコマンドを表示したい。

コマンド履歴をさかのぼって、問題が発生した場合に問題の原因となったコマンドを見つけたいと思います。

コミットの履歴を見ることは1つのことですが、ブランチの作成やリモートの追加などの他のアクションの履歴を保持するために、これらは追跡されますか?


3
これは少しおかしなことですが、を見ると.git/logs、各ブランチが指すコミットの履歴が表示されます。
Nayuki、2011

1
@Nayuki pushingはローカルブランチの状態を変更しないので、reflog明らかにpushesを保存しないので.git/logs/refs/remotes/*/*push履歴を確認するには、調べるだけです。
カイルストランド

回答:


-8

gitは、インデックスなどに影響するコミットの変更を表示しますgit rm。実行したすべてのgitコマンドのログは保存されません。

ただし、多数のgitコマンドは、新しいブランチの作成など、何らかの方法でインデックスに影響を与えます。これらの変更は、で表示できるコミット履歴に表示されgit logます。

ただし、gitなどが追跡できない破壊的な変更がありますgit reset

したがって、あなたの質問に答えるために、gitはgit実行したコマンドの絶対的な履歴をリポジトリに保存しません。ただし、多くの場合、コミット履歴を介して実行したコマンドを補間することができます。


2
実際、以下の回答が正しく言及しているように、それはあります。「履歴」には、(インストール以降に)実行されたコマンドのリストが表示されます。
Umesh .A Bhat

2
シェル店の歴史が、gitのは右、ではないのですか?
Alex

3
@UmeshABhat git history、特定のクローンで実行されたコマンドを確認する場合などに役立ちます。
カイルストランド

5
git reflogあなたが欲しいものです。以下の回答を参照してください。
Chéyo

3
@ cp.engr:OPはgitコミットではなく、gitコマンドの履歴を要求します。この回答は、gitコミットからコマンドを推測することを示唆しています。これは非常に困難な作業であり、常に可能とは限りません。git reflog実際にコマンド自体を表示します。また、ところで、シェルはgitコマンドを推論するための少し直接的な方法にすぎませんが、git repoは複数のシェルによって操作される可能性があります。使用されたコマンドをgitに確認することをお勧めします。
コンビ

182

あなたはgit-reflogで履歴を見ることができます(ここの例):

git reflog

18
@PauAI git reflog は、HEADがフォローしていたすべての位置を表示しますが、実際にはすべてのgitコマンドを表示しません。頭を動かさないGitコマンド(たとえばgit branch -D my_precious_branch)は表示されません。
よなたん2016年

@ヨナタン、あなたはそれを手に入れることができませんでしたgit reflog --allか?
コンビ

2
@combinatoristは、リモートを追加してみます(たとえば、OPで指定されたとおり)git remote add foo bargit reflog --allHEADポインタを変更しないため、には表示されません。
よなたん2018

git reflogパラメータのgit status有無にかかわらず、aso。のようなコマンドは表示されません--all
ローレンツ

62

コマンドのログは、シェルの履歴で利用できる場合があります。

history

実行されたコマンドのリストをすぐに確認できない場合は、リストをファイルにエクスポートします。

history > path/to/file

エクスポートされたダンプを制限して、grepでそれをパイプすることにより、それらに「git」が含まれるコマンドのみを表示することができます。

history | grep "git " > path/to/file

履歴には、そのようにフォーマットされた行が含まれる場合があります

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

番号を使用すると、感嘆符を付けてコマンドを再実行できます

$ !518
git status -s

8

CentOSまたは別のLinuxフレーバーを使用している場合は、プロンプトでCtrl+ Rを実行してと入力しますgit

Ctrl+を押し続けるRと、これは履歴を逆検索して、で始まるコマンドを探しますgit



6

Windows PowerShellを使用している場合は、「git」と入力してF8キーを押します。F8キーを押し続けると、すべてのgitコマンドが循環します。

または、cygwinを使用している場合は、^ Rを使用して同じことを行うことができます。


通常のWindowsセッションでは、F7キーを使用して、そのセッションで入力されたすべてのコマンドのリストを表示する小さなウィンドウを取得できます
milso

0

私のバージョンのgit bash "2.24.0.windows.2"で、Windowsユーザーの "home"フォルダにある ".bash-history"というファイルに、そのフォルダにファイル拡張子がないことがわかりました。bashを終了した後にのみ作成されます。

これが私のワークフローです:

  1. bashタイプ "history >> history.txt"を終了する前に[ENTER]
  2. bashプロンプトを終了する
  3. Win + Rを押したまま実行コマンドボックスを開く
  4. shell:profileと入力します
  5. 「history.txt」を開いて、テキストが追加されたことを確認します
  6. 新しい行で[F5]を押してタイムスタンプを入力します
  7. 履歴テキストファイルを保存して閉じます
  8. 次のセッションで新しい履歴が作成されるように、「。bash-history」ファイルを削除します

ポイントが本当に必要な場合は、バッチファイルを作成してこれをすべて実行できると思いますが、これで十分です。それが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.