Gitコマンドについて調べる【git add】
git add
ステージング領域に追加し、コミット対象にするコマンドです。
ファイル指定
$ git add [ファイルパス]
ファイルをスペース区切りで複数指定することもできます。
$ git add readme1.md readme2.md
ファイル形式指定
ワイルドカードが使用できます。カレントディレクトリ内でワイルドカードに一致するファイルがすべてaddされます。
$ git add *.md
複数指定も可能。
$ git add *.md *.txt
ディレクトリ指定
ディレクトリ内のすべての変更がaddされます。指定したディレクトリ内の下の階層の変更もすべてaddされます。
$ git add [ディレクトリ名]
こちらも複数指定ができます。
$ git add docs lib
また、.(ドット)を指定するとカレントディレクトリ以下のすべての変更がaddされます。
$ git add .
オプション
-A
、--all
git管理内のすべての変更がaddされます。カレントディレクトリが先頭のディレクトリでなくてもです。また、新規追加・削除したファイルもすべてaddされます。
$ git add -A $ git add --all
-u
、--update
既にgit管理内にあるファイルのみで、変更があった部分のみをaddします。ですので新規追加されたファイルは対象になりません。
$ git add -u $ git add --update
-f
、--force
.gitignoreに書かれている管理対象外のファイルも強制的にaddします。オプションの前または後にどのファイルをaddするかの記述が必要です。.gitignoreに書いている意味が無いのであまり使う機会がないような。
$ git add -f -A $ git add . --force
-p
、--patch
ファイルすべてをaddするのではなく、ファイル内でaddしたい部分を自分で選択しながらaddすることができます。hunkと言われる変更のかたまりごとにaddするかを訪ねてくるので、y
でaddし、n
でaddしない事ができます。
$ git add -p -A $ git add . --patch
-n
、--dry-run
dry runと言われる、コマンド実行はしますが実際には反映されずどういったことが起こるかを知ることができるようなものがあります。
実際にはaddはされませんが、どのファイルがaddされるか一覧で見ることができます。
$ git add -n -A $ git add . --dry-run
addを取り消すには?
git reset
コマンドを使用します。内容については次回以降。
Gitコマンドについて調べる【gitのファイル、ディレクトリ操作】
ファイル・ディレクトリの新規追加
ファイルの追加
コマンドは特にないようですので普通にファイルを追加します。touchコマンドなどを使って通常通りファイルを追加します。
$ touch README.md
ディレクトリの追加
ディレクトリの新規追加もコマンドは特にないようですので普通にディレクトリを追加します。
$ mkdir docs
ただし、ファイルが何も入っていない空のディレクトリはgitの管理対象外ですので、コミットすることはできません。空のディレクトリを残しておきたい場合は、慣例的に.keepや.gitkeepファイルをおいておくようです。
touch docs/.gitkeep
ファイル・ディレクトリの移動
$ git mv [元のファイル、ディレクトリパス] [移動先のファイル・ディレクトリパス]
例)
# カレントディレクトリにあるREADME.mdをdocsディレクトリに移動 $ git mv README.md docs/README.md # docsディレクトリをlibディレクトリ内に移動 $ git mv docs lib/docs
ファイル名・ディレクトリ名の変更
ファイル・ディレクトリの移動と同じで、git mv
を使います。
$ git mv [元のファイル・ディレクトリ名] [変更後のファイル・ディレクトリ名]
例)
# README.mdをREADME-2.mdに変更 $ git mv README.md README-2.md # docsディレクトリをdocumentsに変更 $ git mv docs documents
名称の変更と移動は同じgit mv
なので、移動をしながら名称を変更できます。
# ファイル名を変えつつディレクトリを移動 $ git mv README.md docs/README-2.md
ファイル・ディレクトリの削除
ファイルの削除
$ git rm [ファイル名]
例)
# README.mdを消す $ git rm README.md
ディレクトリの削除
-r
オプションを付けます。
git rm -r [ディレクトリ名]
例)
# docsディレクトリを消す $ git rm -r docs
ディレクトリを削除した場合はディレクトリ内のすべてのファイルも削除されます。
--cachedオプション
--cached
をつけるとgit上からは削除されますがファイル自体は残しておくことができます。
# docsディレクトリをgit上からは削除する $ git rm -r --cached docs
これはgitリポジトリに対して削除したコミットをできるだけで、ファイル・ディレクトリ自体はgitの管理対象からは外れていないため、次からのコミット対象には含まれるため注意。管理対象から外したい場合は.gitignoreに追記が必要です。
Gitコマンドについて調べる【git clone】
git clone
$ git clone [URL] [パス名]
例:
$ git clone git@github.com:kimromi/example.git
URL
基本の形は以下の様な形です。
git://[ドメイン名]:[ユーザ名]/[リポジトリ名].git
git@github.com:kimromi/example.git
の例でいくと、
です。
ドメイン名は、通常の公開されているGithubであればgithub.comで、Github Enterprise版であればそれぞれ設定しているドメインになります。Bitbucketならbitbucket.orgです。
パス名
省略可能です。省略した場合は現在のディレクトリにリポジトリ名のディレクトリを作成し、その中にクローンします。
よく間違えることとしては、先にディレクトリを作ってからその中でgit cloneするとその中にディレクトリができてしまうので想定と違ってしまうことがあります。
# exampleディレクトリを作る $ mkdir example # exampleディレクトリに移る $ cd example # git cloneする $ git clone git@github.com:kimromi/example.git
とすると、現在のディレクトリにexampleディレクトリができてしまうので/example/exampleになってしまいます。
その場合は以下の方法があります。
# exampleディレクトリを作らずそのままgit cloneする $ git clone git@github.com:kimromi/example.git # もしくは、パスに.(ドット)をつけることで現在のディレクトリにクローンできる $ mkdir example $ cd example $ git clone git@github.com:kimromi/example.git .