「GITの使い方」の版間の差分

提供: Eospedia
移動: 案内検索
(git reset とは?)
(git reset とは?)
行32: 行32:
 
--hard                                        HEADの位置、インデックス、ワーキングツリーをすべて変更する。
 
--hard                                        HEADの位置、インデックス、ワーキングツリーをすべて変更する。
  
※ ワーキングツリー:現在のディレクトリ
+
*ワーキングツリー:現在のディレクトリ
※ インデックス:addが終わった状態
+
*インデックス:addが終わった状態
※ HEAD:commitが終わった状態(登録されている一番最後)
+
*HEAD:commitが終わった状態(登録されている一番最後)
※ commitが終わった直後は、HEAD、インデックス、ワーキングツリーの3つが同じ位置を示す。
+
*commitが終わった直後は、HEAD、インデックス、ワーキングツリーの3つが同じ位置を示す。
※ ファイル等を変更するとワーキングツリーが先に進む。
+
*ファイル等を変更するとワーキングツリーが先に進む。
※ addを行うと、インデックスがワーキングツリーの位置に進む
+
*addを行うと、インデックスがワーキングツリーの位置に進む
※ さらにファイル等を修正すると、ワーキングツリーが先に進む(この場合、HEAD、インデックス、ワーキングツリーがすべて異なる状態)
+
*さらにファイル等を修正すると、ワーキングツリーが先に進む(この場合、HEAD、インデックス、ワーキングツリーがすべて異なる状態)

2014年7月10日 (木) 04:07時点における版

一括でgit rmする方法

実際のファイルを消したのち、git rmを一括でかけたくなる場合があります。

git rm `git ls-files --deleted`

特殊なファイル名が混じっている場合には下記を使ってみましょう

git status | grep deleted: | cut -c 15- | sed -e 's/ /\\ /g' | xargs git rm

特殊なファイル名をgit rmする方法

特殊なファイル名(例えば、?)のものが消えない場合があります。その際に利用します。

git rm "XX"
git status | grep deleted: | cut -c 15- | sed -e 's/ /\\ /g' | xargs git rm

 mergeがうまくいかないとき 

下記のエラーメッセージに出会ったとき

error: Your local changes to the following files would be overwritten by merge:

git reset --hard HEAD

git reset とは?

HEAD の位置を変更するコマンド。オプションによってインデックス、ワーキングツリーの内容も変更できる。

git reset のオプションは? --soft、--mixed(オプションなしと同等)、--hard オプションがあり、影響度の小さい順に以下のようになる。

--soft HEAD の位置のみを変更する。インデックス、ワーキングツリーには影響なし。

--mixed (またはオプションなし) HEAD の位置とインデックスを変更する。ワーキングツリーには影響なし。

--hard HEADの位置、インデックス、ワーキングツリーをすべて変更する。

  • ワーキングツリー:現在のディレクトリ
  • インデックス:addが終わった状態
  • HEAD:commitが終わった状態(登録されている一番最後)
  • commitが終わった直後は、HEAD、インデックス、ワーキングツリーの3つが同じ位置を示す。
  • ファイル等を変更するとワーキングツリーが先に進む。
  • addを行うと、インデックスがワーキングツリーの位置に進む
  • さらにファイル等を修正すると、ワーキングツリーが先に進む(この場合、HEAD、インデックス、ワーキングツリーがすべて異なる状態)