概要
-
git mv
を行うとgit log -p
使用時に履歴を閲覧できない - filter-branch で過去の commit 内でディレクトリを移動することで閲覧できる
git filter-branch -f --prune-empty --tree-filter '
dir="path/to/movedir"
if [ ! -e "$dir" ]
then
mkdir -p "$dir"
git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files "$dir"
fi'
git mv 使用時
$ git init
Initialized empty Git repository in /private/tmp/git-log/.git/
# README.md 作成, 編集の commit 作成
$ touch README.md
$ git add README.md
$ git commit -m "Initial Commit"
[master (root-commit) 0cb6fee] Initial Commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
$ echo "git log の確認" >> README.md
$ git add README.md
$ git commit -m "README.md 編集"
[master 2f6c8a2] README.md 編集
1 file changed, 1 insertion(+)
git log
を確認します
$ git log -p README.md
commit 2f6c8a27507e9838485412cf8499cdd1632c6af0 (HEAD -> master)
Author: otsuka.kentaro <kentaro_otsuka@metaps.com>
Date: Fri Oct 11 09:09:00 2019 +0900
README.md 編集
diff --git a/README.md b/README.md
index e69de29..7923e00 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+git log の確認
commit 0cb6fee47f54cb31ef07f4ad5a9b748306661aa9
Author: otsuka.kentaro <kentaro_otsuka@metaps.com>
Date: Fri Oct 11 09:08:26 2019 +0900
Initial Commit
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e69de29
README.md を移動した後に git log
を確認してみます
# README.md の移動
$ mkdir foo
$ git mv README.md foo/README.md
$ git commit -m "README.md 移動"
[master c3bbb6d] README.md 移動
1 file changed, 0 insertions(+), 0 deletions(-)
rename README.md => foo/README.md (100%)
$ git log -p foo/README.md
commit c3bbb6d43f95f9500ec7255d3e031521a87937ae (HEAD -> master)
Author: otsuka.kentaro <kentaro_otsuka@metaps.com>
Date: Fri Oct 11 09:11:40 2019 +0900
README.md 移動
diff --git a/foo/README.md b/foo/README.md
new file mode 100644
index 0000000..7923e00
--- /dev/null
+++ b/foo/README.md
@@ -0,0 +1 @@
+git log の確認
-
diff --git a/foo/README.md b/foo/README.md
コマンドを発行しているようなので過去の履歴が見れません。
git filter-branch 使用時
README.md の移動前の commit から。
$ git log
commit c3bbb6d43f95f9500ec7255d3e031521a87937ae (HEAD -> master)
Author: otsuka.kentaro <kentaro_otsuka@metaps.com>
Date: Fri Oct 11 09:11:40 2019 +0900
README.md 移動
commit 2f6c8a27507e9838485412cf8499cdd1632c6af0
Author: otsuka.kentaro <kentaro_otsuka@metaps.com>
Date: Fri Oct 11 09:09:00 2019 +0900
README.md 編集
commit 0cb6fee47f54cb31ef07f4ad5a9b748306661aa9
Author: otsuka.kentaro <kentaro_otsuka@metaps.com>
Date: Fri Oct 11 09:08:26 2019 +0900
Initial Commit
$ git checkout -b filter-branch 2f6c8a27507e9838485412cf8499cdd1632c6af0
Switched to a new branch 'use-filter-branch'
filter-branch で移動後 git log
で確認
$ git filter-branch -f --prune-empty --tree-filter '
dir="foo"
if [ ! -e "$dir" ]
then
mkdir -p "$dir"
git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files "$dir"
fi'
$ git log -p foo/README.md
commit 3ae7d6d4ce007282e189b3ed5b56303990eca082 (HEAD -> use-filter-branch)
Author: otsuka.kentaro <kentaro_otsuka@metaps.com>
Date: Fri Oct 11 09:09:00 2019 +0900
README.md 編集
diff --git a/foo/README.md b/foo/README.md
index e69de29..7923e00 100644
--- a/foo/README.md
+++ b/foo/README.md
@@ -0,0 +1 @@
+git log の確認
commit 867f6f0d570bad36cd0deaae073ea67f690d1cb0
Author: otsuka.kentaro <kentaro_otsuka@metaps.com>
Date: Fri Oct 11 09:08:26 2019 +0900
Initial Commit
diff --git a/foo/README.md b/foo/README.md
new file mode 100644
index 0000000..e69de29
まとめ
- 普段 GUI ツールで git 操作を行っているので
git mv
とgit log
の挙動を初めて知った。