ローカルネットワーク環境でファイルをgitでバージョン管理する

# 概要
gitサーバーの作成、リポジトリの作成、ローカルへのリポジトリのクローン、サーバーへのプッシュまでの一連の作業を行います。
この記事はファイルのバックアップという観点からサーバー、クライアントをそれぞれ別のPCで構築する仮定で説明します。
サーバーとクライアントを同一PCで構築しても問題ありません。

# 対象
作業中のファイルのバックアップが煩雑で困っているが、クラウドなど外部のネットワークで管理するのはちょっとアレという人向けです。
うっかりファイルを上書きしてしまっても、バージョン管理をしていれば戻すこともできるのでそのような方にもバージョン管理はおすすめです。

バージョン管理といえば一般的にはプログラムを管理するものと思われがちですが、どのようなファイルでも管理できるのでデザイナーさんにも使っていただきたいです。

# 使用環境

### OS
 　Windows
- 基本どれで工程はほぼ変わりらないですが、簡単のためWindowsの使用を前提とします。

### サーバー
　[git](https://git-scm.com/ "git")
- gitのアプリケーションです。サーバー兼クライアントとして機能します。

### クライアント
　[Fork](https://git-fork.com/ "Fork")
- git単体で完結できますが、実際に使用する場合はクライアントアプリケーションを使う方が効率的です。
本記事はForkの使用を前提とします。
※Forkは無料で使用可能ですが、任意で有料購入する俗にいうカンパアプリケーションというものです。安心の買い切りですし、個人的にはお値段以上の価値があると思っているのでぜひ購入を検討してください。

# インストール

公式サイトからアプリケーションをダウンロードします。
https://git-scm.com/

![スクリーンショット 2024-04-20 084500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/b4d19dc8-c998-6d1e-d045-d2ded91196a0.png)

インストール参考リンク
https://www.sejuku.net/blog/73444

gitのインストールはサーバー、クライアントどちらにも行います。
インストール時のダイアログの選択はすべてデフォルトで問題ないかと思います。
インストール後のユーザーの設定は後述する[クライアント構築](#クライアント構築)で行うので不要です。


コマンドプロンプトで以下のコマンドを実行しバージョンが表示されば成功です。

``` shell:コマンド
git --version
```

# サーバー構築
### 共有ディレクトリ作成

任意のディレクトリを右クリック＞プロパティ＞共有
メニューから共有ディレクトリを作成します。

本記事では以下のパスを共有ディレクトリとします。
``` shell:パス
D:\Share
```

![スクリーンショット 2024-04-20 092411.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/b5934165-b58a-b37d-a832-810fec2c69e7.png)

黒塗りの部分はサーバー名が入ります。
![スクリーンショット 2024-04-20 091511.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/8c99ee12-8188-72e1-adce-6a0c2e2cae3a.png)


### リポジトリ作成

共有ディレクトリ配下にリポジトリ用の空ディレクトリを作成します。
※ディレクトリ名は任意です。
``` shell:パス
D:\Share\examplerepo
```

作成したディレクトリを開き、右クリックメニューからOpen Git Bash hereでgit用のコマンドプロンプトを開きます。
※gitがインストールされていると追加される項目です。

![スクリーンショット 2024-04-20 093328.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/460c7f17-5bb4-61d7-c15f-3666fdded038.png)

以下のコマンドを実行し、空のリポジトリを作成します。
``` shell:コマンド
git init --bare
```

成功すると以下のようなファイルが作成されます。

![スクリーンショット 2024-04-20 094128.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/90d307f9-d198-9d92-5507-072ee2592e46.png)

以上でサーバーの構築および、リモートリポジトリの作成は完了です。

# クライアント構築

### インストール
公式サイトからアプリケーションをダウンロードします。

https://git-fork.com/

![スクリーンショット 2024-04-20 095155.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/21f7d9c3-48e3-e623-1ac2-4bc5900dc950.png)

インストーラを実行し、インストールします。
特にこだわりがなければデフォルトで問題ないと思います。

### ユーザー設定

Forkからgitにアクセスするユーザー設定を行います。
file＞Preferences

ユーザー名とメールアドレスを設定しますが、任意で問題ありません。
メールアドレスはダミーでも大丈夫です。

![スクリーンショット 2024-04-20 095932.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/488ec804-723e-09f1-61ab-55b505336edb.png)

gitタブに移動、ユーザー名、メールアドレスを設定します。
githubのアカウントを持っているならgithubの物を使うとよいと思います。

![スクリーンショット 2024-04-20 100007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/20dc6fd3-b84b-a71e-11ff-837b6c4e1b99.png)

https://qiita.com/sta/items/982ab68e8220a81d485c

### リポジトリのクローン

メニューからダイアログを開きます。

file＞Clone


![スクリーンショット 2024-04-20 101130.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/95a6eb84-e705-323a-d699-c749e1b23a32.png)

[リポジトリ作成](#リポジトリ作成)で準備したリポジトリのネットワークパス
``` shell:RepositoryURL
\\サーバー名\Share\examplerepo
```
任意の作業パス
※参考のため私の環境値で記載しています。
``` shell:ParentFolder
D:\Work\koiusa
```

任意の作業リポジトリ名
※任意ですが、わかりやすさのためリモートリポジトリと合わせることをお勧めします。
``` shell:Name
examplerepo
```

![スクリーンショット 2024-04-20 101820.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/4f245744-7a5e-9eaa-5c90-a43e4460f17d.png)


任意の作業パス配下に、任意の作業リポジトリ名で指定したディレクトリが作成されます。

![スクリーンショット 2024-04-20 101859.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/5a84ca35-a89a-631c-8933-7090b5405b69.png)



### コミット

ファイルを追加してみます。

![スクリーンショット 2024-04-20 104213.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/d8a22f18-56ab-52be-4dc0-2030c75d0090.png)

Forkで確認するとUnstageの欄に追加したファイルがリストされます。

![スクリーンショット 2024-04-20 104443.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/3567346a-b5c5-8f1e-78f7-0af5543bf1fe.png)

stageを押下するとstageの欄に移動します。
ここに入っているものがコミット対象となります。
![スクリーンショット 2024-04-20 104723.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/407a3bcc-fb20-3576-7207-4761f8f3105c.png)

Commit subjectにわかりやすい説明を記述して、コミットを実行します。
※Commit subjectを入力しないとコミットできません。

![スクリーンショット 2024-04-20 104843.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/66dc2246-b3c0-55e8-1407-caf2c9910a69.png)


変更履歴がローカルリポジトリに保存されます。
※この段階ではまだサーバーに反映されていません。

![スクリーンショット 2024-04-20 105035.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/deb41737-0a15-4f8a-c628-c0cf63180d5f.png)


### プッシュ

Pushのアイコンをクリックし、Push用のダイアログを開きます。
![スクリーンショット 2024-04-20 105347.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/51aa471c-8a59-0296-7272-96523865a90e.png)

ブランチを選んでpushを実行します。
※最初のうちはデフォルトで問題ないです。

![スクリーンショット 2024-04-20 105357.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953463/03fe3c6f-dc56-86da-5787-79229b758455.png)


変更結果がリモートリポジトリ（サーバー）に反映されます。


以上でgitでのファイル保存が完了しました。

# 補足

### サイズの大きいファイルを扱い場合

大きいファイルをGitで扱う場合はGitLFSという仕組みを使う方がよいでしょう。


https://git-lfs.com/

GitLFSを使用するためにはGit管理用のWebサーバーを別途稼働させる必要があります。
個人的には、Gitbucketが導入が比較的容易で、動作も軽いのでお勧めです。

[GitBucket(Githubへのリンク)](https://github.com/gitbucket/gitbucket)