12
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

なぞりながら復習するGitコマンド その1

Posted at

概念

3つのエリアから構成されている

ワーキングディレクトリ

監視されているファイルの初期位置

ステージングエリア

addされたファイルが移動するエリア
コミットの対象になる

リポジトリ

コミットされたファイルが格納される場所

Gitツアー

では早速、作業をするフォルダを作成しましょう

$ mkdir git-tour
$ cd git-tour/

git status

リポジトリの状態を確認するコマンド。おなじみですね。

$ git status
fatal: Not a git repository (or any of the parent directories): .git

現在はまだ何もしていないので、Gitリポジトリがないと言われます。

git init

リポジトリを作成するコマンド

あながち間違いじゃないが、今までgitの初期化のコマンドとしか認識していなかったが
ローカルにリポジトリを作成するコマンドらしい。

リポジトリ作る
$ git init
Initialized empty Git repository in /Users/xxxxxx/xxxxxx/git-tour/.git/

git initを実行すると.gitが作成され、ここにリポジトリに関する情報が管理される。

$ git status
On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)

つまり.gitを削除すればリポジトリは削除される

$ rm -rf .git/
$ git status
fatal: Not a git repository (or any of the parent directories): .git

元に戻しましょう

$ git init

適当なファイルを作ってみましょう

$ echo 'Hello World' > text.md
$ ls
text.md
$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	text.md

nothing added to commit but untracked files present (use "git add" to track)

ディレクトリ内で何かファイルの作成なり編集なり削除されるとまずワーキングディレクトリと言うエリアに属することになるUntracked files:となっているのが目印だ。

ワーキングディレクトリのファイルを削除するにはgit cleanを使用します。
git cleanを使用するとワーキングディレクトリ内のファイルを一掃することができます。

#削除の対象のファイルを確認
$ git clean -n
Would remove text.md

#実行
$ git clean -f
Removing text.md

これをコミットの対象となるステージングに移動するにはgit addを使用する。

git add

ステージングにファイルを追加するコマンド

#ファイルをステージングに追加
git add <ファイル名>

#複数ファイルを追加
git add <ファイル名> <ファイル名> <ファイル名> <ファイル名>

#すべてのファイルを追加
git add .

text.mdをステージングエリアに追加する

$ echo 'Hello World' > text.md
$ git add text.md
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   text.md

Changes to be committed:がステージングエリアにいるファイルの目印です。

ステージングエリアのファイルをワーキングディレクトリに戻す

git reset

git resetでステージングエリアのファイルをワーキングディレクトリに戻すことができる。

$ git reset text.md 
$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	text.md

nothing added to commit but untracked files present (use "git add" to track)

ステージングエリアに追加した後同ファイルを更新していた場合

$ git add text.md 
$ echo 'Hello Git' > text.md
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   text.md

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   text.md

$ cat text.md 
Hello Git

この状態でgit resetした場合

$ git reset text.md
$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	text.md

nothing added to commit but untracked files present (use "git add" to track)
$ cat text.md 
Hello Git

text.mdは最新の状態のまま
ステージングエリアのファイルの状態をワーキングディレクトリに上書きする場合はgit checkoutを使用する

$ echo 'Hello Staging Erea' > text.md
$ git add text.md 
$ echo 'Hello Working Directory' > text.md
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   text.md // Hello Staging Erea

Changes not staged for commit: 
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   text.md // Hello Working Directory

$ cat text.md
Hello Working Directory

$ git checkout text.md 

$ cat text.md
Hello Staging Erea

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   text.md

リポジトリにコミット

git commit

リポジトリにコミットするにはgit commitを使用、ステージングエリアにいるファイルをコミットします。

$ git commit -m "text.mdを作成"
[master (root-commit) 966a537] text.mdを作成
 1 file changed, 1 insertion(+)
 create mode 100644 text.md

text.mdを少し編集してみましょう。

$ echo 'Hello New World' > text.md
$ cat text.md 
Hello New World

git diff

現在の編集とリポジトリの差分を見るにはgit diffを使用します。

$ git diff
diff --git a/text.md b/text.md
index 5b33845..d9786ef 100644
--- a/text.md
+++ b/text.md
@@ -1 +1 @@
-Hello Staging Erea
+Hello New World

ステージングエリアへの追加とコミットを一つのコマンドで実行できる方法もあります。
この場合ワーキングディレクトリ内のファイル全てが対象になります。

$ git commit -a -m "text.mdを編集"
[master 83f0b1a] text.mdを編集
 1 file changed, 1 insertion(+), 1 deletion(-)

git log

git logではコミットのログを確認できます。

$ git log
commit 83f0b1ac966094d4c2afafa22ffff04f2b204306
Author: stivan622 <stivan.tr@gmail.com>
Date:   Thu Dec 28 06:20:14 2017 +0900

    text.mdを編集

commit 966a53756321340db3e4f27b6cd8a5e44a5f26bf
Author: stivan622 <stivan.tr@gmail.com>
Date:   Thu Dec 28 06:14:34 2017 +0900

    text.mdを作成

直前のコミット編集することもできます。
Hello New Worldで編集したが、!が抜けていた。
だけど追加でコミットしたくない時に便利なのがgit commit --amend

$ echo 'Hello New World!' > text.md
$ git add text.md
$ git commit --amend
[master 3e33a46] text.mdを編集
 Date: Thu Dec 28 06:20:14 2017 +0900
 1 file changed, 1 insertion(+), 1 deletion(-)

またgit commit --amendを実行するとvimが起動するので、編集の内容修正のみの場合はそのまま閉じる、
コミットメッセージを修正したい場合はvimで修正が可能。

$ git log
commit 3e33a4602ad09b97811a45bc5d8ea04537e8f107
Author: stivan622 <stivan.tr@gmail.com>
Date:   Thu Dec 28 06:20:14 2017 +0900

    text.mdを編集

commit 966a53756321340db3e4f27b6cd8a5e44a5f26bf
Author: stivan622 <stivan.tr@gmail.com>
Date:   Thu Dec 28 06:14:34 2017 +0900

    text.mdを作成

ログが変わってないのがわかる。

git revert

コミットを打ち消すコミットを作成することができる

commit 3e33a4602ad09b97811a45bc5d8ea04537e8f107
Author: stivan622 <stivan.tr@gmail.com>
Date:   Thu Dec 28 06:20:14 2017 +0900

    text.mdを編集

このコミットをリバートする場合

$ git revert 3e33a4602ad09b97811a45bc5d8ea04537e8f107
$ cat text.md 
Hello Staging Erea
$ git log
commit 531eda295dbc2ad586c09d2882fc6fc202009cf7
Author: stivan622 <stivan.tr@gmail.com>
Date:   Thu Dec 28 06:32:36 2017 +0900

    Revert "text.mdを編集"
    
    This reverts commit 3e33a4602ad09b97811a45bc5d8ea04537e8f107.

commit 3e33a4602ad09b97811a45bc5d8ea04537e8f107
Author: stivan622 <stivan.tr@gmail.com>
Date:   Thu Dec 28 06:20:14 2017 +0900

    text.mdを編集

commit 966a53756321340db3e4f27b6cd8a5e44a5f26bf
Author: stivan622 <stivan.tr@gmail.com>
Date:   Thu Dec 28 06:14:34 2017 +0900

    text.mdを作成

次回はリモートリポジトリが絡んだ場合の操作を復習します〜

12
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?