質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

2回答

2216閲覧

gitのHEAD^の動作がおかしくなってしまった

siruku6

総合スコア1382

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2016/09/17 07:14

編集2016/09/17 15:00

###実現したいこと
gitでHEAD^の動作がおかしくなってしまった。
元に戻したい。

###発生している問題

今、gitで

git

1git diff HEAD^ [ファイル名]

を実行しても何も表示されず、

git

1git diff HEAD^^ [ファイル名]

を実行すると、直前のコミットとの差分が表示される状態になっています。

色々試してみたところ、

git

1git diff HEAD~2

の結果と

git

1git diff HEAD^^^^ [ファイル名]

の結果が一致しました。

更に、

git

1git show

の結果と、

git

1git diff HEAD^^ [ファイル名] 2git diff HEAD^^ HEAD^ 3git diff HEAD~

の結果が一致しています。

これらの現象から推測されるのですが、おそらく、「^」キャレット2個で、本来の1個分の働きしかしなくなってしまったのだと思われます。

どのようにすれば解消できるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

入門gitを読み直していたら、あっさりミスに気が付き、解決いたしました。

Windowsでgitを使っている場合、[^]キャレットを使用する時は、リビジョンごと引用符で囲む必要があるそうです。
つまり、

git diff "HEAD^" HEAD [ファイル名]
git diff "35s5a68^^" "HEAD^" [ファイル名]

のように、しなければならないようです。

回答、アドバイスくださったみなさま、ありがとうございました。
そして、お騒がせいたしました!m(_ _)m

参考:「入門git」(Travis Swicegood 著, でびあんぐる 訳, オーム社, p.79)

投稿2016/09/20 00:49

編集2016/09/20 00:51
siruku6

総合スコア1382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

最新のコミットでは指定したファイルが変更されていないのではないでしょうか?
git show などで最新のコミットの内容を確認してみてください。

投稿2016/09/17 12:39

thinca

総合スコア1864

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siruku6

2016/09/17 13:08

git showで最新コミットを確認してみましたが、やはりgit diff HEAD^^ [ファイル名]の内容と一致しました。 ちなみに、互いに無関係なローカルリポジトリを複数持っていますが、どのリポジトリでも同じ現象が起きています。
退会済みユーザー

退会済みユーザー

2016/09/17 13:15 編集

多分HEADに対する認識間違いかな。 HEADはローカルの最新コミットのことですよ なんでクローン等をすればサーバーの状態に戻ります。
siruku6

2016/09/17 13:34

git show の結果と git diff HEAD^ HEAD の結果は通常一致すると思われるのですが、 git show の結果、最新コミットの内容が表示されるにもかかわらず git diff HEAD^ HEAD の結果は何も表示されません。 そして、 git show の結果は、 git diff HEAD^^ HEAD^ [ファイル名] の結果と一致します。 ちなみに、リモートリポジトリは作っていませんので、クローン対象がありません。。。
siruku6

2016/09/17 14:51

色々試していたら、他にもおかしな現象を見つけました。 1 git diff HEAD~ git diff HEAD~ は正常に動作し、 git show と同じ結果になりました。 2 git diff HEAD^^^、git diff HEAD^^^^ そして、 git diff HEAD^^^ を実行したところ、 git diff HEAD^^ と同じ結果になってしまいました。 更に、 git diff HEAD^^^^ を実行したところ git diff HEAD~2 と同じ結果になりました。 どうやら「 ^ 」2個で、本来の1個分の働きしかしなくなっているようです。 これはどういうことなのでしょうか? どうすれば解決できるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問