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

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

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

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

Q&A

解決済

1回答

10846閲覧

git checkout . (ピリオド)とgit reset --hard HEADの違い

NUNU_E64

総合スコア63

Git

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

0グッド

0クリップ

投稿2016/01/07 05:03

編集2016/01/07 14:42

下記のコマンド二種はどう違いますか?
普段、コミットしていない変更を元に戻す際には、git reset --hard HEADを使っていますが、git checkout . を使う状況があれば教えて下さい。

git checkout .(ピリオド)
git reset --hard HEAD

通常git checkoutはブランチを切り替える目的で使い、リビジョンを引数に指定しますが、git checkout .では何を指定しているのでしょうか。ピリオドがHEADを指すわけでもないようですね。(下記)

bash

1$ git status 2On branch branch_a 3Changes to be committed: 4 (use "git reset HEAD <file>..." to unstage) 5 6 modified: aaaa 7 8Changes not staged for commit: 9 (use "git add <file>..." to update what will be committed) 10 (use "git checkout -- <file>..." to discard changes in working directory) 11 12 modified: cccc 13 14$ git checkout . 15$ git status 16On branch branch_a 17Changes to be committed: 18 (use "git reset HEAD <file>..." to unstage) 19 20 modified: aaaa 21 22$ touch dddd 23$ git status 24On branch branch_a 25Changes to be committed: 26 (use "git reset HEAD <file>..." to unstage) 27 28 modified: aaaa 29 30Untracked files: 31 (use "git add <file>..." to include in what will be committed) 32 33 dddd 34 35$ git checkout HEAD 36M aaaa 37$ git status 38On branch branch_a 39Changes to be committed: 40 (use "git reset HEAD <file>..." to unstage) 41 42 modified: aaaa 43 44Untracked files: 45 (use "git add <file>..." to include in what will be committed) 46 47 dddd 48

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

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

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

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

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

guest

回答1

0

ベストアンサー

git addコマンドでindexに追加した内容が、

  • git rest --hard HEADの場合: リセットされる(無くなる)
  • git checkout .の場合: 保持される

という違いがあります。
これに伴いコマンド実行後のワーキングツリーの状態も差異が出ます。

こちらもどうぞ:


git checkout .は、manにある

__git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>…__​

When <paths> or --patch are given, git checkout does not switch branches. It updates the named paths in the working tree from the index file or from a named <tree-ish> (most often a commit).

の形で、pathに.(ドット、すなわちカレントディレクトリ)を指定し、<tree-ish>を明示しない(If not specified, the index will be used)ものです。
つまり、カレントディレクトリ以下をindexの状態に更新する、の意です。

投稿2016/01/07 09:18

編集2016/01/07 15:56
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

NUNU_E64

2016/01/07 14:11

回答ありがとうございます。リンクも見ました。 git checkout .の場合は、indexに追加したファイル/箇所は元に戻らないんですね。なるほど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問