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

提供: Eospedia
移動: 案内検索
行12: 行12:
 
  git status | grep deleted: | cut -c 15- | sed -e 's/ /\\ /g' | xargs git rm
 
  git status | grep deleted: | cut -c 15- | sed -e 's/ /\\ /g' | xargs git rm
  
=== mergeがうまくいかないとき ===
+
=== mergeがうまくいかないとき ===
  
 
下記のエラーメッセージに出会ったとき
 
下記のエラーメッセージに出会ったとき
行50: 行50:
 
--- a/bin/wish/Display2/tclIndex
 
--- a/bin/wish/Display2/tclIndex
 
+++ b/bin/wish/Display2/tclIndex
 
+++ b/bin/wish/Display2/tclIndex
 +
</pre>
 +
 +
=== 作業ディレクトリを元に戻す ===
 +
'''git checkout'''を使用すれば、作業ディレクトリのデータを特定のバージョン(タグ)に戻すことができます。
 +
<pre>
 +
$ git checkout (タグ名) (ファイル名)
 +
</pre>
 +
 +
<div>例: 全てのファイルを最後のコミット時に戻す</div>
 +
<pre>
 +
$ git checkout HEAD .
 +
</pre>
 +
 +
=== 管理外のファイル削除する ===
 +
'''git clean'''を使用することにより、GITで管理していないファイルを削除することができます。例えば、コマンド単体テストやチュートリアル実行などでできるファイルなどをまとめて削除したい場合に有効です。オプション-n で削除対象の確認、オプション-f で実際に削除します。一旦削除すると元に戻せませんので、必ず -nで確認を行ってから実行しましょう。<br>
 +
 +
<div>使用例</div>
 +
<pre>
 +
$ git clean -n
 +
Would remove a.txt
 +
$ git clean -f
 +
Removing a.txt
 
</pre>
 
</pre>

2014年8月27日 (水) 02:41時点における版

一括で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、インデックス、ワーキングツリーがすべて異なる状態)

差分ファイルを確認する

差分ファイルを確認するにはgit diffを使用します。

実行例

$ git diff
diff --git a/bin/wish/Display2/tclIndex b/bin/wish/Display2/tclIndex
index 8fd9302..75a715a 100644
--- a/bin/wish/Display2/tclIndex
+++ b/bin/wish/Display2/tclIndex

作業ディレクトリを元に戻す

git checkoutを使用すれば、作業ディレクトリのデータを特定のバージョン(タグ)に戻すことができます。

$ git checkout (タグ名) (ファイル名)
例: 全てのファイルを最後のコミット時に戻す
$ git checkout HEAD .

管理外のファイル削除する

git cleanを使用することにより、GITで管理していないファイルを削除することができます。例えば、コマンド単体テストやチュートリアル実行などでできるファイルなどをまとめて削除したい場合に有効です。オプション-n で削除対象の確認、オプション-f で実際に削除します。一旦削除すると元に戻せませんので、必ず -nで確認を行ってから実行しましょう。

使用例
$ git clean -n
Would remove a.txt
$ git clean -f
Removing a.txt