0
0

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 1 year has passed since last update.

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

Posted at

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

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

※前回記事のリポジトリ状態からの続きになっています。

前回記事へ 目次へ:Git関連記事のまとめページ 次回記事へ

実行例

(※試行用に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等は不使用。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?