[Git] 動作を試す 実行例44：--depth=1でリモートリポジトリから過去1つの履歴しか取得しない

Gitの動作を理解するために、Gitのコマンドを実際に試して、結果を見てみました。

1つの記事内で一連のGitコマンドが完結しているので、これら一連のコマンドを順に実行させて結果を見ることで、一連のGitの動作を実際に体感でき、一通り独習することが可能です。

※前回記事のリポジトリ状態からの続きになっています。
| [前回記事へ](https://qiita.com/dl_from_scratch/items/26ba1c71d9e7f146ec06) | [目次へ：Git関連記事のまとめページ](https://qiita.com/dl_from_scratch/items/597bc28a4787a7901d21) | [次回記事へ](https://qiita.com/dl_from_scratch/items/45d135dee5b7abf86c5a) |
|:-:|:-:|:-:|

# 実行例

```
(※試行用にlocal-repo3を作成)

cd /test-space
mkdir local-repo3
cd /test-space/local-repo3

git init
git remote add origin "D:/test-space/remote-repo1.git"

git log
↓
結果: 
fatal: your current branch 'master' does not have any commits yet

-----

(※--depth=1で、過去1つだけの履歴しか取得しない)
git fetch --depth=1 origin master
↓
結果: 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (5/5), 357 bytes | 1024 bytes/s, done.
From D:/test-space/remote-repo1
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master

git log --oneline --graph --all
↓
結果: 
* c69a305 (grafted, origin/master) message R1

(※--depth=1で、途中からの履歴になり、graftedの表記となる)

-----

(※--depth=2で、過去1つだけの履歴しか取得しない)
git fetch --depth=2 origin master
↓
結果: 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 289 bytes | 2.00 KiB/s, done.
From D:/test-space/remote-repo1
 * branch            master     -> FETCH_HEAD

git log --oneline --graph --all
↓
結果: 
* c69a305 (origin/master) message R1
* 94996a0 (grafted) message4

(※--depth=2で、途中からの履歴になり、graftedの表記となる)

-----

(※--depthを省略してfetchしても、継続して途中からの履歴のまま、graftedの表記となる)

git fetch origin master
↓
結果: 
From D:/test-space/remote-repo1
 * branch            master     -> FETCH_HEAD

git log --oneline --graph --all
↓
結果: 
* c69a305 (origin/master) message R1
* 94996a0 (grafted) message4

(※適当に変更を追加してリモートリポジトリを更新)

cd /test-space/local-repo1
git checkout master
echo Sample-Added-R3 >> test1.txt
git commit -a -m "message R3"
git push origin master

cd /test-space/remote-repo1.git
git log --oneline --graph --all
↓
結果: 
* fab68d8 (HEAD -> master) message R3
* c69a305 message R1
* 94996a0 message4
| * e009b2d (branch-R1) message R2
|/
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1

cd /test-space/local-repo3
git log --oneline --graph --all
↓
結果: 
* c69a305 (origin/master) message R1
* 94996a0 (grafted) message4

git fetch origin master
↓
結果: 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 310 bytes | 1024 bytes/s, done.
From D:/test-space/remote-repo1
 * branch            master     -> FETCH_HEAD
   c69a305..fab68d8  master     -> origin/master

git log --oneline --graph --all
↓
結果: 
* fab68d8 (origin/master) message R3
* c69a305 message R1
* 94996a0 (grafted) message4

(※リモートリポジトリに追加更新があっても、継続して途中からの履歴のまま、graftedの表記となる)

-----

(※取得していない過去の履歴へはアクセスできない)

git show 4ace194 --oneline -s
↓
結果: 
fatal: ambiguous argument '4ace194': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

git show c69a305 --oneline -s
↓
結果: 
c69a305 message R1

-----

(※全ての履歴を取得)

git fetch --depth=10000 origin master
↓
結果: 
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 10 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), 721 bytes | 240.00 KiB/s, done.
From D:/test-space/remote-repo1
 * branch            master     -> FETCH_HEAD

git log --oneline --graph --all
↓
結果: 
* fab68d8 (origin/master) message R3
* c69a305 message R1
* 94996a0 message4
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1

(※全ての履歴を取得、grafted表記は無しとなる)

-----

(※全ての履歴を取得後に、再度、履歴を短縮化)

git fetch --depth=2 origin master
↓
結果: 
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
From D:/test-space/remote-repo1
 * branch            master     -> FETCH_HEAD

git log --oneline --graph --all
↓
結果: 
* fab68d8 (origin/master) message R3
* c69a305 (grafted) message R1

git show 4ace194 --oneline -s
↓
結果: 
4ace194 message1

(※まだ履歴が残っているので、過去の履歴へアクセス可の状態)

-----

※まずこれまでの操作履歴が入ったreflogを削除
git reflog expire --expire=now --all

※リポジトリから全てのアクセスできないコミットを削除
git gc --aggressive --prune=now
↓
結果: 
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 8 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (8/8), done.
Total 8 (delta 1), reused 0 (delta 0), pack-reused 0

git show 4ace194 --oneline -s
↓
結果: 
fatal: ambiguous argument '4ace194': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

(※アクセスできない履歴が削除され、grafted以前の過去の履歴へアクセス不可となる)

-----

(※local-repo3を削除)
cd /test-space
rd /s /q "/test-space/local-repo3"
```

# 環境

Windows 10、PortableGit-2.40.0-64-bitを使用、全てローカルPC上で実施、GitHub等は不使用。