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 .