Git基礎のメモ4 (mv, log, tag)

ファイルの移動 (git mv)

管理済みのファイルを==移動したい==、==ファイル名を変更したい==場合に使用する。

> git mv test.txt xxx.txt
> git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    renamed:    test.txt -&gt; xxx.txt

これは以下の操作と同じになる(コピーして追加、コピー元を削除)

> cp test.txt xxx.txt
> git add xxx.txt
> git rm test.txt

コミットログの閲覧 (git log)

git logは、管理リポジトリのコミット履歴を新しい順に、 チェックサム、コミットした人の名称・メールアドレス、日時、コミットメッセージが 表示される。

>git log
commit d613980d6914b15ac96bfc06cfa8cc62a7adafa4
Author: Hoge <hoge@hoge.com>
Date:   Fri Jan 27 13:19:02 2017 +0900
rename xx file.

commit 39ad3ba6c5fc0aba2282d99003cc11445a6f3450
Author: Hoge <hoge@hoge.com>
Date: Fri Jan 27 13:15:23 2017 +0900

modified xx file.

commit bf36bed188837c6ccf7ef5e6852cdd6c21657b90
Author: Hoge <hoge@hoge.com>
Date: Fri Jan 27 13:15:04 2017 +0900

first commit

--statオプションをつけると、修正ファイルと修正ボリュームを可視化した一覧が表示される。

>git log --stat
commit ad4fa10b01f33f73032ae9775f87f687266b7910
Author: hoge <hoge@hoge.com>
Date:   Mon Jul 10 14:53:55 2017 +0900

    bugfix xxx

 xxx.js | 23 +++++++++++++++++++----
 xxx.css  | 36 ++++++++++++++++++++++--------------
 2 files changed, 41 insertions(+), 18 deletions(-)

commit 604b4a4bc766e7ec3c73f8327a8eb3d3d951c5c4
Author: hoge <hoge@hoge.com>
Date:   Thu Jul 6 11:13:13 2017 +0900

    bug fix zzz yyy

 sv_www.js | 70 +++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 45 insertions(+), 25 deletions(-)

-pオプションをつけると、変更箇所も表示される。またその後に==負値==を追加すると、 直近から換算した履歴数(-1だと、直前の履歴のみ)だけログが表示される。

> git log -p -1
commit d613980d6914b15ac96bfc06cfa8cc62a7adafa4
Author: Chihiro Doi <ntr-cdoi@mx2.caelum.co.jp>
Date:   Fri Jan 27 13:19:02 2017 +0900
rename xx file.

diff --git a/test.txt b/test.txt
deleted file mode 100644
index 5d308e1..0000000
--- a/test.txt
+++ /dev/null
@@ -1 +0,0 @@

--pretty=onelineを追加すると、1コミット1行で表示される。

> git log --pretty=oneline
d613980d6914b15ac96bfc06cfa8cc62a7adafa4 rename xx file.
39ad3ba6c5fc0aba2282d99003cc11445a6f3450 modified xx file.
bf36bed188837c6ccf7ef5e6852cdd6c21657b90 first commit

またフォーマットを指定したり、--graphでアスキーグラフを追加して、 ブランチの追加やマージが視覚的に表示される。

> git log --pretty=format:"%h %an %ad %s" --graph
* d613980 Chihiro Doi Fri Jan 27 13:19:02 2017 +0900 rename xx file.
* 39ad3ba Chihiro Doi Fri Jan 27 13:15:23 2017 +0900 modified xx file.
* bf36bed Chihiro Doi Fri Jan 27 13:15:04 2017 +0900 first commit

フォーマットの一部抜粋

フォーマット 内容
%H コミットのハッシュ
%h コミットのハッシュ(短縮版)
%an Author名
%ae Authorのメールアドレス
%ad Authorのコミット日付

タグ

  • タグの参照と検索

    指定しない場合は、タグが一覧表示される。オプションをつけて部分一致するタグ名を列挙することも可能。

      git tag
      git tag -l 'keyword'
    
  • タグの作成

    ==軽量版==と==アノテーション付き==があるが、通常は、アノテーション付きで行う。

      git tag -a (tag name) -m "(message)"
    

    軽量版は、オプションなしで作成

      git tag (tag name)
    
  • タグの詳細表示

    タグ名を指定してgit showを実行する。

      git show (tag name)
    

    過去のコミットに対してタグを作成したい

    コミットのチェックサムを指定してタグを付与する。 チェックサムは、短縮名でも良い。

      > git log --pretty=oneline
      ca82a6dff817ec66f44342007202690a93763949 changed the version number
      085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test code
      a11bef06a3f659402fe7563abf99ad00de2209e6 first commit
      > git tag -a tag_v01 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
    

    また、タグ情報は、リモートへpushされない。タグ情報をリモートにアップロード する場合は、以下のようにタグ名を指定する。 また、すべてのタグ情報をアップロードする場合は、--tagsオプションでpushする。

      > git push origin (tag name)
      > git push origin —tags