GitLab入門

農林水産技術会議事務局 筑波産学連携支援センター
Version 1.1, 2022-03-08

目次
1. はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. GitとGitLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1. 基本知識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1.1. バージョン管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1.2. Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1.3. GitLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. 準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.1. Gitのインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.1.1. Windowsの場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2. Git初期設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2.1. 日本語ファイル名を使う場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. SSH認証キーの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.4. GitLab公開鍵登録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. プロジェクト作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1. GitLabでのプロジェクト作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2. PCでクローン(git clone) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.3. 初期ファイルを登録(commit & push) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5. ファイルの更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.1. GitLabの編集機能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.2. PC(ローカルリポジトリ)へのファイル同期(git pull) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.3. ログ表示(git log) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.4. PC(ローカルリポジトリ)でのファイル作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.5. コッミット(Gitへの登録) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.6. GitLabへのファイル同期(git push) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6. Gitの基礎. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.1. 3つの状態 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.2. Gitの基本的な作業の流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.2.1. リモートの修正をローカルに反映 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.2.2. ワーキングツリーのファイルを修正. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.2.3. リモートリポジトリに修正を反映 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.2.4. status (git status) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.2.5. 変更履歴(log). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2.6. 差分表示(git diff) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7. Gitと連携する開発環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.1. VSCodeのダウンロードとインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.1.1. 拡張機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.1.2. ターミナルの規定のシェル設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.2. Gitの操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.2.1. リポジトリを開く. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.2.2. ステージング(git add) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.2.3. コミット(git commit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.2.4. ログ(git log) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.2.5. プシュ & プル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

8. テキストエディタ vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8.1. ファイルのオープン (起動) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8.1.1. 文字を入力する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8.2. ファイルのセーブと終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8.3. 基本的な編集操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8.3.1. カーソルを移動する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8.4. テキスト削除. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8.4.1. 文字コード, 改行コードを指定して保存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8.4.2. 文字コードを指定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
8.4.3. 改行コードを指定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
8.4.4. 上記、文字コードを指定した後に、ファイルを保存します。 . . . . . . . . . . . . . . . . . . . 31
8.4.5. 文字化けしたファイルを開き直す . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
付録 A: 参考情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

1. はじめに2.1. 基本知識

1. はじめに
GitとGitLabについて、基本的な使い方をまとめてみました。
プログラム作成に限らず、仕様書やマニュアルなど更新、改版が必要な文書を作成する際、これらのバージョン管理や共同での文書作成に役に立つツールとなるでしょう。

2. GitとGitLab
2.1. 基本知識
2.1.1. バージョン管理プログラムソースコードやテキスト文書、ファイルの変更履歴(バージョン)を管理することで、過去の変更箇所を確認したり、特定の時点の内容に戻すことが可能となります。
ファイル名に「最新」や「日付」をつけて履歴管理すると、どのファイルが最新の正しいものかが分かりにくくなります。
バージョン管理システムを使うことで、何時、誰が変更したといった履歴の記録や特定時点のファイルを取り出すことが可能となります。

2.1.2. Git
Gitは、ファイルのバージョン管理を容易にするシステムです。
Gitは、分散型のバージョン管理システムで、個人のPCにリポジトリを作成してバージョン管理ができます。 更にリモートリポジトリ(今回の説明では、GitLab)と連携して、共同でプログラム開発や文書作成をするとができます。
Git公式サイト https://git-scm.com/

図 1. Git公式サイト

1

GitLab入門

3.1. Gitのインストール

2.1.3. GitLab
GitLabは、共同で利用するリモートリポジトリのサーバとして機能し、更に共同作業を支援する課
題管理やWikiなどの機能を備えたWebサービスで、クラウドサービスとして有名なGitHubと同様の機能を備えています。 また、オープンソース版のGitLab Community Edition (GitLab CE)があり、オンプレミスでのサーバ運用が可能です。
GitLab日本語情報サイト https://www.gitlab.jp/

図 2. GitLab日本語情報サイト

3. 準備
GitLabでバージョン管理するには、Gitが動作する環境を個人のPCに設定する必要があります。

3.1. Gitのインストール
MacやLinuxであれば、プログラム開発環境をインストールすることで、Gitも標準的にインストー
ルされます。 Windowsでは、WSL (Windows Subsystem for Linux)を使うことで、Linux環境を利用できます。 また、ここで紹介するWindows用のGit(Git Bash)も、コマンドの使い方はLinuxやMacと同様です。



Windows用Git(Git Bash)は、Windows上で動くUnixライクな環境であるMSYS2をベースにしたコマンドラインインターフェース(CLI)とソフトウェアを組み合わせて提供されています。

3.1.1. Windowsの場合• 公式ページ( https://git-scm.com/ )から、インストーラーをダウンロードします。
◦ 図 1, “Git公式サイト”の右下のディスプレイ画像に最新版インストーラのダウンロードリン
クがあります。
• インストーラーを起動(管理者として実行)すると、多くの設問が表示されます。

2

3. 準備3.2. Git初期設定◦ 標準設定でも問題はないのですが、改行コードの取扱オプションについては、デフォルトではなく一番下の"Checkout as-is, commit as-is"を選択することをおすすめします。

図 3. 改行コードの取り扱いオプション◦ 共同で作業したり、Windows, Mac, Linux環境が混在する場合やWindowsのWSLを使う場合に、改行コードが問題になる場合があります。
• 一般ユーザでも任意のディレクトリにインストール可能な、Portable版(Git for Windows
Portable ("thumbdrive edition"))もあります。

3.2. Git初期設定
インストールが完了したら、Git Bashを起動します。(アプリケーションメニューの「Git」配下の「Git Bash」を起動します。)
Git Bashは、WindowsでGitコマンドを操作するツールで、ls, catなどLinuxと同様の基本コマンドも動作します。

図 4. Git Bash 画面イメージ

Gitでは、誰が変更したのかを記録するために、ユーザ名とメールアドレスを登録する必要があります。
• Git Bashを起動し、コマンドを使ってユーザ名とメールアドレスを登録します。

$ git config --global user.name "Hikari KOSHINO"$ git config --global user.email "koshihikari@example.com"• ここで指定するメールアドレスは、GitLabに登録されているメールアドレスを設定します。
◦ GitLabの管理者にユーザ登録を依頼する際には、Gitに設定しているメールアドレスを指定

3

GitLab入門

3.2. Git初期設定

してください。

3.2.1. 日本語ファイル名を使う場合
Gitで日本語ファイル名を取り扱う場合、文字化けすることがあります。
(バックスラッシュ \ でエスケープされた文字コードが表示される)• git status で、「日本語ファイル名.docx」が追加された場合の表示$ git status
On branch mainYour branch is up to date with 'origin/main'.
Untracked files:(use "git add <file>..." to include in what will be committed)"\346\227\245\346\234\254\350\252\236\343\203\225\343\202\241\343\202\244\343\203\253\345\220\215.docx"
nothing added to commit but untracked files present (use "git add" to track)• 文字化けを解決するために、以下の設定を追加します。

$ git config --global core.quotepath false①① 日本語を使う方は、ほぼ必須の設定となります。
• quotepath 設定変更後、日本語ファイル名は正常に表示されます。

$ git config --global core.quotepath false$ git status
On branch mainYour branch is up to date with 'origin/main'.
Untracked files:(use "git add <file>..." to include in what will be committed)
日本語ファイル名.docx
nothing added to commit but untracked files present (use "git add" to track)4

3. 準備3.3. SSH認証キーの作成

3.3. SSH認証キーの作成
リモートリポジトリと通信する場合に、SSHの公開鍵で認証します。
http(s)での利用も可能ですが、SSHの利用をお勧めします。
• Git Bashを起動し、ssh-keygenコマンドを使って認証キーを作成します。(WindowsのGitには、OpenSSHが標準でインストールされます。)• 鍵の強度が高いことから、ed25519をお勧めします。従来はRSAの2048以上を使うことを推奨していましたが、ED25519の方が鍵の強度が高く、鍵長も短い(256)ことから高速です。

koshihikari@mng-dpc-17018 MINGW64 ~$ ssh-keygen -t ed25519 ①
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/koshihikari/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase): ②
Enter same passphrase again:
Your identification has been saved in /c/Users/koshihikari/.ssh/id_ed25519
Your public key has been saved in /c/Users/koshihikari/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx koshihikari@mng-dpc-17018
The key's randomart image is:+--[ED25519 256]--+| o*=*B.
||+:-) :-( :-D||= o=* . :-P||=.+*^_^* .
||=_=+= o T_T||o oo.o +: p|| . :) 8-)|| -_-b.. orz|| .+ oo.
|+----[SHA256]-----+① コメントを付与する場合は、ssh-keygen -t ed25519 -C "コメント" とします。
② ssh-keygen -t ed25519 コマンドを実行し、パスフレーズを設定してください。

3.4. GitLab公開鍵登録
作成したSSH公開鍵(~/.ssh/id_ed25519.pub)を、GitLabに登録します。
• GitLabにサインインします。(Username or email, Password)• 右上のユーザのプルダウンメニューから「設定」を選択します。
• 左側のメニューから「SSH鍵」を選択します。

5

GitLab入門

3.4. GitLab公開鍵登録

SSH鍵メニュー設定メニュー• キーの部分に、~/.ssh/id_ed25519.pub の内容をコピー&ペーストします。

$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
koshihikari@mng-dpc-17018

6

4. プロジェクト作成

4.1. GitLabでのプロジェクト作成

図 5. SSH公開鍵登録

4. プロジェクト作成
Gitは、プログラム開発におけるソースコードのバージョン管理を主な目的として開発されたツールです。
プログラム開発では、関連する複数のファイルを1つのディレクトリ(フォルダ)にまとめて管理し、これをリポジトリといいます。
GitLabでは、1つの目的にむけてバージョン管理や課題管理を行う単位をプロジェクトとして作成、管理します。

4.1. GitLabでのプロジェクト作成• GitLabにサインインします。
• 「新規プロジェクト」をクリックして、プロジェクトを作成します。
• Create blank projectをクリックして、新規プロジェクトを作成します。

7

GitLab入門

4.1. GitLabでのプロジェクト作成

図 6. 新規プロジェクト作成◦ プロジェクト名: 任意のプロジェクト名を入力します。
◦ プロジェクトのURL: 個人の場合はユーザIDを選択し、Project slugには、ディレクトリ(フォルダー)名を指定します。
◦ プロジェクトの説明(オプション)を入力◦ 可視レベル: 個人では「プライベート」を指定します。
◦ 「プロジェクトを作成」をクリックすると、GitLab上にプロジェクトが作成されます。

図 7. GitLabプロジェクト作成8

4. プロジェクト作成

4.2. PCでクローン(git clone)

4.2. PCでクローン(git clone)
GItLabでプロジェクト作成時点では、ローカルリポジトリがありません。コマンドラインによる手順が表示されますので、この手順に沿ってローカルリポジトリを作成します。

図 8. ローカルリポジトリ作成手順• Gitのグローバル設定は、3.2, “Git初期設定”の手順で設定済みであることを確認してください。
• 3.4, “GitLab公開鍵登録”の手順で、SSH公開鍵が登録されていることを確認してください。
• 新しいローカルリポジトリを作成◦ PCでGit Bash (Windows PC)を起動します。

koshihikari@mng-dpc-17018 MINGW64 ~$ cd Apps/Documents/ ①① cdコマンドで、ローカルリポジトリを作成するディレクトリ(任意のディレクトリ)に移動します。

koshihikari@mng-dpc-17018 MINGW64 ~/Apps/Documents$ git clone git@gitlab.example.com:koshihikari/gitlab-start.git ①
Cloning into 'gitlab-start'...
Enter passphrase for key '/c/Users/koshihikari/.ssh/id_ed25519': ②
warning: You appear to have cloned an empty repository.
① git clone コマンドで、GitLabのリポジトリをクローン(コピー)します。
② 登録したSSHキーのパスフレーズを入力して認証します。
◦ Gitの初期化されたリポジトリ(ディレクトリ)が作成されます。

9

GitLab入門

4.3. 初期ファイルを登録(commit & push)koshihikari@mng-dpc-17018 MINGW64 ~/Apps/Documents$ cd gitlab-start ①① リポジトリ(ディレクトリ)に移動します。
◦ ファイルを作成します。

koshihikari@mng-dpc-17018 MINGW64 ~/Apps/Documents/gitlab-start (main)$ touch README.md ①① touch コマンドで、空のファイル(README.md)を作成◦ Git Bashの場合、作業中のディレクトリ(working directory)やブランチ名が表示され、入力待ち(プロンプト)が表示されます。

ユーザ名＠PC名 MINGW64 ワーキングディレクトリ (ブランチ名)
koshihikari@mng-dpc-17018 MINGW64 ~/Apps/Documents/gitlab-start (main)$ <= プロンプト(入力待ち)

4.3. 初期ファイルを登録(commit & push)
touchコマンドで作成したファイルは、まだGitの管理下ではありません。以下の手順でGitの管理に取り入れます。また、リモートリポジトリ(GitLab)に反映するpushも行います。
• 作成したファイルをGitの管理下に取り入れます。(ステージング)

koshihikari@mng-dpc-17018 MINGW64 ~/Apps/Documents/gitlab-start (main)$ git add README.md ①① git add で、作成したファイルをGit管理に取り入れます。(ステージング)◦ この状態をステージングと言い、Gitの管理下にファイルを取り入れていますが、履歴管理の情報は記録されていませんので、Gitの管理下から削除(取り消し: git reset
README.md)しても、履歴は残りません。 なお、git resetしても、ファイルは削除されません。
• Gitの履歴を記録する。(コッミット)

koshihikari@mng-dpc-17018 MINGW64 ~/Apps/Documents/gitlab-start (main)$ git commit -m "add README" ①[main (root-commit) 12fdae0] add README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md① git commitで、ファイルの履歴が記録されます。-m "add README"は、履歴のコメントとして記録されます。

10

4. プロジェクト作成

4.3. 初期ファイルを登録(commit & push)• GitLab(リモートリポジトリ)に、ファイルと履歴を反映(push)します。

koshihikari@mng-dpc-17018 MINGW64 ~/Apps/Documents/gitlab-start (main)$ git push -u origin main
Enter passphrase for key '/c/Users/koshihikari/.ssh/id_ed25519':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 219 bytes | 109.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To gitlab.example.com:koshihikari/gitlab-start.git* [new branch]main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

11

GitLab入門

5.1. GitLabの編集機能

5. ファイルの更新
5.1. GitLabの編集機能
GitLabには、テキストファイルの編集機能があります。markdownやasciidoc形式にも対応しており、最初に作成したREADME.mdやWikiなどの編集が可能です。
1. GitLabのプロジェクト「GitLab入門」のREADME.mdファイルをクリックします。

図 9. README.mdファイルを選択

2. 空のファイル(Empty file)であることが確認できます。「編集」をクリックして、内容を書き込みます。

図 10. README.mdファイルの表示

図 11. README.mdファイルを編集

3. markdownなどは、プレビュータブで、記述内容のプレビューができます。 コミットメッセージを入力して、「Commit changes」をクリックします。

12

5. ファイルの更新

5.2. PC(ローカルリポジトリ)へのファイル同期(git pull)

図 12. 内容のプレビューと確定(コミット)

5.2. PC(ローカルリポジトリ)へのファイル同期(git pull)• GitLabの編集機能でファイルを編集しても、PC(ローカルリポジトリ)には、更新が反映されて
いません。

$ ls
README.md$ cat README.md①① cat README.md で、ファイルが空(何も表示されない)であることを確認• リモートリポジトリの変更をローカルリポジトリに反映します。

koshihikari@mng-dpc-17018 MINGW64 ~/Apps/Documents/gitlab-start (main)$ git pull ①
Enter passphrase for key '/c/Users/koshihikari/.ssh/id_ed25519': ②
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 360 bytes | 9.00 KiB/s, done.
From gitlab.example.com:koshihikari/gitlab-start
12fdae0..8d71b29 main-> origin/main
Updating 12fdae0..8d71b29
Fast-forward
README.md | 3 +++1 file changed, 3 insertions(+)① git pullコマンドで、リモートリポジトリから変更されたファイルを取得② SSHキーのパスフレーズを入力

13

GitLab入門

5.3. ログ表示(git log)

• cat README.md で、ファイルが更新されたことを確認$ cat README.md# GitLab入門
GitLabを初めて利用される方向けの案内を作成します。

5.3. ログ表示(git log)
• git logコマンドで、履歴(ログ)を表示します。(新しいものから順に表示)$ git log
commit 8d71b29f6626904efcf7c9307f9d9177e36402a8 (HEAD -> main, origin/main)
Author: Hikari KOSHINO <koshihikari@example.com>
Date: Sat Feb 20 16:07:08 2021 +0900
READMEを編集した。
Update README.md
commit 12fdae01954bf65dfc4afa193d56acea60c73e43
Author: Hikari KOSHINO <koshihikari@example.com>
Date: Sat Feb 20 15:52:28 2021 +0900
add README

5.4. PC(ローカルリポジトリ)でのファイル作成• vimやPCのエディタなどで、ファイル(gitlab-start.adoc)を作成します。

$ lsgitlab-start.adoc

README.md• git statusは、ローカルリポジトリ状態を表示します。

$ git status
On branch mainYour branch is up to date with 'origin/main'.
Untracked files: ①(use "git add <file>..." to include in what will be committed)
gitlab-start.adoc
nothing added to commit but untracked files present (use "git add" to track)14

5. ファイルの更新

5.5. コッミット(Gitへの登録)① Untracked files:(未追跡ファイル) gitlab-start.adoc があると表示• ステージング(git add)して、状態を確認(git status)$ git add gitlab-start.adoc①$ git status
On branch mainYour branch is up to date with 'origin/main'.
Changes to be committed:(use "git restore --staged <file>..." to unstage)
new file:
gitlab-start.adoc ②① gitlab-start.adoc を、git管理下に追加② 新しいファイルが追加されたことを表示

5.5. コッミット(Gitへの登録)• git commit で、ファイルの履歴を記録◦ -m オプションなしの場合は、エディタ(Vim)が起動しますので、コミットメッセージを編集します。

$ git commit◦ エディタ(Vim)が起動しますので、メッセージを編集し、保存・終了します。(8, テキストエ
ディタ vim参照)

GitLab入門を書き始める。gitlab-start.adoc を追加①# Please enter the commit message for your changes. Lines starting# with '#' will be ignored, and an empty message aborts the commit.
#
On branch main
# Your branch is up to date with 'origin/main'.
## Changes to be committed:
new file:
gitlab-start.adoc#① 1行目に、コミットメッセージを入力します。
◦ コミットが完了したことを示すメッセージ$ git commit[main dc8c0a9] GitLab入門を書き始める。gitlab-start.adoc を追加

15

GitLab入門

5.6. GitLabへのファイル同期(git push)

1 file changed, 35 insertions(+)
create mode 100644 gitlab-start.adoc• git logで、履歴を確認(リモートリポジトリには反映していない)$ git log
commit dc8c0a9cf3a85d5a5bd4e1df314cc9265319a695 (HEAD -> main)
Author: Hikari KOSHINO <koshihikari@example.com>
Date: Sat Feb 20 20:23:14 2021 +0900
GitLab入門を書き始める。gitlab-start.adoc を追加
On branch main
new file:

gitlab-start.adoc

commit 8d71b29f6626904efcf7c9307f9d9177e36402a8 (origin/main)
Author: Hikari KOSHINO <koshihikari@example.com>
Date: Sat Feb 20 16:07:08 2021 +0900
READMEを編集した。
Update README.md
commit 12fdae01954bf65dfc4afa193d56acea60c73e43
Author: Hikari KOSHINO <koshihikari@example.com>
Date: Sat Feb 20 15:52:28 2021 +0900
add README

5.6. GitLabへのファイル同期(git push)• git push コマンドで、リモートリポジトリ(GitLab)に修正を反映します。

$ git pushEnter passphrase for key '/c/Users/koshihikari/.ssh/id_ed25519':
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 702 bytes | 351.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To gitlab.example.com:koshihikari/gitlab-start.git
8d71b29..dc8c0a9 main -> main16

6. Gitの基礎

6.1. 3つの状態

6. Gitの基礎
Gitを使ってバージョン管理する上で必要な、基本的な知識を説明します。
3, 準備を参照して、Gitの利用環境を準備してください。
• Gitをインストール(3.1, “Gitのインストール”参照)します。
• Gitの初期設定(3.2, “Git初期設定”参照)を登録ます。
◦ gitコマンドを使って、ユーザ名とメールアドレスを登録します。
◦ 日本語ファイル名を利用する場合は、 git config --global core.quotepath false を設定します。
• ssh認証用の公開鍵と秘密鍵を作成し、公開鍵をGitLabに登録します。
◦ sshキーを作成(3.3, “SSH認証キーの作成”参照)します。
◦ 公開鍵をGitLabに登録(3.4, “GitLab公開鍵登録”参照)します。

6.1. 3つの状態
Gitを使う上で、次の3つエリア、3つの状態を理解してください。

図 13. Gitの3つのエリア

作業ツリー(ワーキングツリー)
1つのGitプロジェクトのためのファイルやディレクトリが格納されている。
実際に、このディレクトリ内のファイルに対し、編集、更新等を行います。
リモートリポジトリからクローン(clone: コピー元の情報を記録した状態で、Gitリポジトリをコ

17

GitLab入門

6.2. Gitの基本的な作業の流れピー)したときに、コピーされます。
修正済み状態
ファイルを編集、修正を行った状態で、Gitには、修正が反映されていない状態。
ステージングエリア
修正済み状態のファイルを、次のコミットに含めるファイルの情報を格納している。インデックスとも呼ばれる。
ステージ済み状態
次のコミットに備えて、修正されたファイルに印をつけている状態。(5.4, “PC(ローカルリポジトリ)でのファイル作成”参照)$ git add [ファイル名...]ローカルリポジトリ(.git ディレクトリ)
ローカルのデータベースに、ファイルの内容、履歴情報などが格納されている。
コミット済み状態修正されたファイルや履歴情報が、Gitリポジトリに反映された状態。(5.5, “コッミット(Gitへの登録)”参照)$ git commit

6.2. Gitの基本的な作業の流れ
6.2.1. リモートの修正をローカルに反映
1. リモートリポジトリが更新されている場合、最新のファイルをローカルリポジトリに取り込んでから、修正作業を行います。
2. リモートリポジトリの更新を取り入れるには、プル(git pull)コマンドを実行します。(5.2, “PC(ローカルリポジトリ)へのファイル同期(git pull)”参照)$ git pulla. pull は、フェッチ(fetch)とマージ(merge)を同時に行います。
i. ローカルとリモート双方でファイルが更新されている場合は、コンフリクト(衝突、競合)が発生します。
ii. コンフリクトの解決方法について、ここでは説明しません。別の解説書やインターネッ
トの情報を参照願います。
b. ファイルの修正を始める前に、リモートのファイルが更新されていないかを確認すると良いでしょう。
3. 自分のPCに新たにリモートリポジトリ取り込んで、ローカルリポジトリを作成するには、クローン(git clone)コマンドを実行します。(4.2, “PCでクローン(git clone)”参照)

18

6. Gitの基礎

6.2. Gitの基本的な作業の流れ

6.2.2. ワーキングツリーのファイルを修正
1. 作業ツリー内のファイルを修正します。
a. ここでファイルの編集、追加、削除などを行います。
2. 修正されたファイルをステージングエリアに追加します。(git add [ファイル名…])
a. コミットしようとする修正済みファイルに対して、Gitの管理に追加します。
3. コミット(git commit)します。これは、ステージングエリアのファイルと履歴情報をGitリポジ
トリに格納し、保持することです。
a. コミット済みのファイルは、後からでもコミット時点のファイルを取り戻すことができます。

6.2.3. リモートリポジトリに修正を反映
1. リモートリポジトリを使っている場合は、プッシュ(5.6, “GitLabへのファイル同期(git push)”参照)します。これは、ローカルリポジトリのコミット状態を、リモートリポジトリに反映させます。
a. リモートリポジトリを、誰かが先に更新していた場合は、プッシュが拒否されます。この場
合は、リモートの変更内容を確認しローカルに反映するなどの調整が必要です。

6.2.4. status (git status)• statusは、前回のコミット済み状態と比較して、ファイルの変更状態を表示します。

$ git status
On branch mainYour branch is up to date with 'origin/main'.
Untracked files: ①(use "git add <file>..." to include in what will be committed)
gitlab-start.adoc
nothing added to commit but untracked files present (use "git add" to track)① Untracked files:(未追跡ファイル) gitlab-start.adoc があると表示• ステージング(git add)して、状態を確認(git status)$ git add gitlab-start.adoc①$ git status
On branch mainYour branch is up to date with 'origin/main'.
Changes to be committed:(use "git restore --staged <file>..." to unstage)
new file:
gitlab-start.adoc ②

19

GitLab入門

6.2. Gitの基本的な作業の流れ① gitlab-start.adoc を、git管理下に追加② 新しいファイルがステージングエリアに追加されたことを確認

6.2.5. 変更履歴(log)• 変更履歴を確認するには、git logコマンドを使います。(5.3, “ログ表示(git log)”参照)$ git log
commit dc8c0a9cf3a85d5a5bd4e1df314cc9265319a695 (HEAD -> main)
Author: Hikari KOSHINO <koshihikari@example.com>
Date: Sat Feb 20 20:23:14 2021 +0900
GitLab入門を書き始める。gitlab-start.adoc を追加
On branch main
new file:

gitlab-start.adoc

commit 8d71b29f6626904efcf7c9307f9d9177e36402a8 (origin/main)
Author: Hikari KOSHINO <koshihikari@example.com>
Date: Sat Feb 20 16:07:08 2021 +0900
READMEを編集した。
Update README.md• ログを1行で表示するには、git log --onelineを使います。

$ git log --onelineb1589dc (HEAD -> main, origin/main) GitLab入門を更新
dc8c0a9 GitLab入門を書き始める。gitlab-start.adoc を追加
8d71b29 READMEを編集した。 Update README.md
12fdae0 add README

6.2.6. 差分表示(git diff)• git diffは、前回のコミット済みファイルと比較して、ファイルの変更内容を表示します。

$ git diff ①
diff --git a/gitlab-start-git.adoc b/gitlab-start-git.adoc
index 7cbd764..9aa6425 100644--- a/gitlab-start-git.adoc+++ b/gitlab-start-git.adoc@@ -11,14 +11,14 @@ Gitを使う上で、次の3つエリア、3つの状態を理解してくださ.Gitの3つのエリア
image::git-start-01.png[scaledwidth="70%", align="center"]-作業ツリー(ワーキングディレクトリ)::

20

6. Gitの基礎

6.2. Gitの基本的な作業の流れ+作業ツリー(ワーキングツリー)::
1つのGitプロジェクトのためのファイルやディレクトリが格納されている。 +実際に、このディレクトリ内のファイルに対し、編集、更新する作業を行います。 +修正済み状態:::
ファイルを編集、修正を行った状態で、Gitには、修正が反映されていない状態。
ステージングエリア::-次のコミットに含まれるファイルの情報を格納している。インデックスとも呼ばれる。
+修正済み状態のファイルを、次のコミットに含めるファイルの情報を格納している。
インデックスとも呼ばれる。
① 編集済みファイルがあれば、コミットからの変更を表示(git diff (オプションなし))• コミットID(git logで表示するコミット毎のハッシュ値)を使うと、コミット間の差分を表示します。

$ git diff 3606427 2fd1a82 ①
diff --git a/gitlab-start.adoc b/gitlab-start.adoc
index 15cf26e..d43764c 100644--- a/gitlab-start.adoc+++ b/gitlab-start.adoc@@ -25,14 +25,14 @@ Ver.0.1 2021-02-20// フォントファイルを置くフォルダ(相対PATH):pdf-fontsdir: fonts// スタイルファイルを指定(相対PATH)-//:pdf-theme: style/sample_spec_style.yml+:pdf-theme: style/sample_man_style.yml// サブタイトルセパレータ:title-separator: ::// ロゴ画像ファイルを指定(相対PATH)-//:title-logo-image: image:theme/sample_portal_logo4.png[]+:title-logo-image: image:theme/sample_portal_logo4.png[]// 表紙背景画像ファイルを指定(相対PATH)-//:title-page-background-image: image:theme/handring-info.svg[]+:title-page-background-image: image:theme/handring-info.svg[]① 短縮形のコミットIDを使うことも可能です。

21

GitLab入門

7.1. VSCodeのダウンロードとインストール

7. Gitと連携する開発環境
Visual Studio Code (VSCode)は、マイクロソフトが無料で公開している軽量なコードエディタで、拡張機能を使用してGitやGit Bashと連携した統合開発環境として利用できます。
VSCodeは、Windows, macOS, Linuxなどに対応しており、どのOSでも同様の使い方が可能です。
また、プログラム開発だけではなく、拡張機能によりmarkdownやasciidoc,LaTeXなど文書作成環
境としても利用できます。

図 14. VSCodeによるGit利用環境

7.1. VSCodeのダウンロードとインストール• Visual Studio Code公式サイト ( https://code.visualstudio.com )図 15. VSCodeの公式サイト• 公式サイトから自分のPC環境に合ったインストーラーをダウンロードします。

22

7. Gitと連携する開発環境

7.1. VSCodeのダウンロードとインストール◦ Windows 10であれば、User Installer 64 bit (Intel 64環境の場合)をダウンロードします。(自分だけで使うのであればSystem Installerは不要)◦ macOSの場合、IntelかApple Siliconかを選択します。
◦ Linuxの場合は、OSのパッケージ管理ツールでインストール可能です。また、Snap版で最新版を利用できます。
• 一般ユーザ権限で、インストーラを実行してインストールします。(Windows)

7.1.1. 拡張機能
VSCodeは、拡張機能を追加することで、使い勝手が良くなります。 お勧めの拡張機能を紹介します。
• Japanese Language Pack for VS Code
◦ VSCodeのメニューや操作画面を日本語化します。

図 16. Japanese Language Pack for VS Codei. 拡張機能のメニューを表示
ii. japanese を検索
iii. Japanese Language Pack for VS Codeをインストール• Git Graph◦ Gitログを見やすく表示します。
◦ ログの詳細や、変更があったファイルの表示、差分表示などをマウス操作で行うことができます。

図 17. Git Graph

23

GitLab入門

7.1. VSCodeのダウンロードとインストール

i. git を検索
ii. Git Graphをインストール• vscode-pdf◦ PDFファイルを表示します。

図 18. vscode-pdf

i. ext:pdf を検索
ii. vscode-pdfをインストール

7.1.2. ターミナルの規定のシェル設定
Git Bashがインストールされていれば、ターミナルを開いてコマンドでの操作ができます。 クローン(git clone)やpull, pushなど、リモートリポジトリのSSH鍵認証などの操作をVSCodeから行う場
合不具合があり、コマンドでの操作の方が簡単です。
• ターミナルの規定のシェルを設定します。
◦ 上部の「ターミナル」メニューから「新しいターミナル」を開きます。
◦ ターミナルのプルダウンメニューから「規定のシェル設定」を開きます。

図 19. ターミナルのプルダウンメニュー◦ 優先するターミナルシェルの選択から「Git Bash」を選択します。

図 20. 優先するターミナルシェルを選択します。

24

7. Gitと連携する開発環境

7.2. Gitの操作

7.2. Gitの操作
7.2.1. リポジトリを開く

図 21. フォルダーを開く• 「ファイル」メニューから「フォルダーを開く」でリポジトリを開く(Macの場合「開く…」)

7.2.2. ステージング(git add)

図 22. ステージング

1. Gitの機能を選択
2. 変更済みファイル M:変更 U:未追跡ファイル
ファイル名右の  をクリックすると、ステージングエリアに追加される。
3. 変更されたファイルの差分(diff)が表示される。
4. ステージングエリアのファイル

25

GitLab入門

7.2. Gitの操作

7.2.3. コミット(git commit)

図 23. コミット

1. ステージングエリアのファイル名右の  をクリックすると、ステージング解除となる。
2. コミットメッセージを入力
3.  チェックをクリックすると、コミットを実行する。

7.2.4. ログ(git log)

図 24. ログ

• ログ表示(Git Graphアイコン)をクリックして、git logを表示• 任意のログをクリックすると詳細が表示され、変更されたファイルの差分などもマウス操作で見ることができます。

26

7. Gitと連携する開発環境

7.2. Gitの操作

図 25. ログ詳細

図 26. 差分表示

7.2.5. プシュ & プル
VSCodeのメニューにも「プッシュ」や「プル」がありますが、ssh認証に失敗するなど不具合があるため、ターミナルからコマンドにより操作します。 (ssh-agentなどを利用してVSCodeから操作する方法もありますが、SSHの設定やssh-agentなどが必要となることから、コマンドによる操作のほうが容易)
リスト 1. プッシュに失敗した際のメッセージ> git push origin main:main
Permission denied, please try again.
Permission denied, please try again.
git@gitlab.example.com: Permission denied (publickey,gssapi-keyex,gssapi-withmic,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
リスト 2. ターミナルからgit logコマンドを実行$ git log
commit bedd7c3628d7317c2bd3cfa1f2d6eadde26d243b (HEAD -> main)
Author: Hikari KOSHINO <koshihikari@example.com>
Date:
Wed Mar 3 20:01:05 2021 +0900
2021-03-03 Vimの使い方を追加した。

27

GitLab入門

7.2. Gitの操作

commit 927207f43755f641fcbb68f39bdd1bdface53d27 (origin/main, origin/HEAD)
Author: Hikari KOSHINO <koshihikari@example.com>
Date:
Wed Mar 3 18:11:20 2021 +0900
2021-03-03 PDFに改ページとコマンドラインを入れてみた。
リスト 3. ターミナルからgit pushコマンドを実行$ git pushEnter passphrase for key '/Users/koshihikari/.ssh/id_ed25519':
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 8 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 85.17 KiB | 3.41 MiB/s, done.
Total 7 (delta 4), reused 0 (delta 0)
To gitlab.example.com:koshihikari/gitlab-start.git
927207f..bedd7c3 main -> main28

8. テキストエディタ vim

8.1. ファイルのオープン (起動)

8. テキストエディタ vim
vi(vim)は、UNIX(Linux)で使われる標準的な(ほとんど全てのUNIXに入っている)エディタです。
vi(vim)には「ノーマルモード」と「挿入モード」があり、多くのコマンドがあるため、初心者にはわかりづらく、とっつきにくい印象ですが、慣れてくれば素早くファイル編集ができます。
Linuxでは、viの機能を拡張したvim(Vi IMproved)が標準のviに置き換えられていることが多くなっています。

8.1. ファイルのオープン (起動)
既存のファイル、または新しいファイルに対してエディタを起動するには、vi(またはvim)コマンドを使います。

vim [filename]
例: vim hoge.txt
既存ファイルがあれば、そのファイルを開きます。
ファイルが無ければ、新規のファイルとして編集することが出来ます。
新しいファイルの場合、画面は次のようになります。起動直後は、「ノーマルモード」ですのでご注意ください。キーを入力すると、コマンドと解釈されます。

~
~
~
~
~
~
~
"hoge.txt" [New File]

0,0-1

All

8.1.1. 文字を入力する
vi(vim)は「ノーマルモード」と「挿入モード」があります。 挿入モード にするには何通りかの方法がありますが、一番標準的なコマンドは、[i] を押すやり方です。
i は表示されませんが、一番下の行が -- INSERT -- に変わり、これを押した後にタイプした文字が全て画面に入力されます。
次の操作(カーソルを移動する場合も)をしたい場合は、[Esc] キーを押して ノーマルモード に戻ります。
表 1. vi 入力モードに関連するコマンド

コマンド

内容

a

カーソルの後にテキストを入力

A

カレント行の末尾にテキストを入力

29

GitLab入門

コマンド8.2. ファイルのセーブと終了

内容i

カーソルの前にテキストを入力

I

行の先頭にテキストを入力

o

カーソル位置の下にテキストを挿入する空行をオープン

O

カーソル位置の上にテキストを挿入する空行をオープン

8.2. ファイルのセーブと終了
編集したファイルを保存して終了するには、 ZZ (大文字)とします。 ただし、「挿入モード」の場合
は、 [Esc] キーを押して「ノーマルモード」にしてから、 ZZ とタイプします。
ファイルを保存するだけの場合は、 :w とします。 別名で保存するには、 :w filename とファイル名を指定します。
何も編集をしていない状態で終了する場合は、 :q とタイプします。 終了と保存を同時にするには、:wq とタイプします( :wq と ZZ は同じ)。
編集した内容がめちゃくちゃで、最初から編集をし直したい場合は、 :e! としてファイルを再読込します。 また、編集内容を破棄して強制終了するには、 :q! とします。

8.3. 基本的な編集操作
8.3.1. カーソルを移動する
viでカーソルを移動するには、「j」「k」「l」「h」キーを使います。
↑
k
←h

l→
j
↓

k キーは上方向に移動します。
h キーは左方向に移動します。
l キーは右方向に移動します。
j キーは下方向に移動します。

8.4. テキスト削除
削除コマンド x を使うと、カーソル位置のテキストを削除します。 単語単位削除は dw 、行削除はdd を使います。
さらに、これらのコマンドの前に数字を入力すると、コマンドの対象範囲が指定できます。 例えば、 2x は 2 文字、 2dw は 2 word、 2dd は 2 行の削除となります。

8.4.1. 文字コード, 改行コードを指定して保存
vim でファイルを開き、任意の文字コードでファイルを保存 (変換) ができます。
vim でファイルを開き、vim のコマンドモードで以下のコマンドで文字コードを指定すると、保存するときに、指定した文字コードに変換されます。

30

8. テキストエディタ vim

8.4. テキスト削除

8.4.2. 文字コードを指定:setl fenc=utf-8①① 文字コードを指定 (setl=setlocal, fenc=fileencoding)

8.4.3. 改行コードを指定:setl ff=unix①① 改行コードを指定 (setl=setlocal, ff=fileformat)

8.4.4. 上記、文字コードを指定した後に、ファイルを保存します。
:w

8.4.5. 文字化けしたファイルを開き直す
自動判別に失敗した場合は、文字コードを指定してファイルを開き直すことができます。
ファイルを開き文字化けした場合は、以下のコマンドでファイルを開き直します。

:e ++enc=文字コード
ファイルを開き ˆM という文字が表示される場合、改行コードを変更してファイルを開き直します。

:e ++ff=改行コード31

GitLab入門

付録 A: 参考情報

付録 A: 参考情報
参考文献
▪ [1] サル先生のGit入門, 株式会社ヌーラボ, https://backlog.com/ja/git-tutorial/ (参照2021-03-09)▪ [2] サルでもわかるGit入門, 大串 肇 (著), アクツ ユミ (著), 一戸 健宏 (著), 兼清 慮子 (著), 齋
木 弘樹 (著), 清野 奨 (著), 福嶌 隆浩 (著), 株式会社ヌーラボ (著), インプレス, 2018-09-25,
ISBN-13 978-4295004837▪ [3] GitLab実践ガイド, 北山 晋吾 (著), インプレス, 2018-02-01, ISBN-13 9784295003038▪ [4] Gitが、おもしろいほどわかる基本の使い方33 改訂新版, 大串 肇 (著), 久保 靖資 (著), 豊
沢 泰尚 (著), エムディエヌコーポレーション, 2019-06-28, ISBN-13 978-4844368687▪ [5] いちばんやさしい Git 入門教室, 大澤 文孝 (著), ソーテック社, 2019-08-25, ISBN-13
978-4800712462▪ [6] 【絶対理解できる】Gitとは？特徴やできることまとめ！, 兵政和,
https://www.sejuku.net/blog/5756 (参照 2021-03-09)▪ [7] Pro Git, Scott Shacon, Ben Straub, 高木正弘(訳), Yusuke Sato(訳), 2nd Edition(2014), https://git-scm.com/book/ja/v2 (参照 2021-03-15), https://progit-ja.github.io(Pro Git 日本語版電子書籍公開サイト 参照 2021-03-15), License CC BY-NC-SA 3.0

改版履歴
Ver.

改版日

改版内容

1.0

2021-04-28

初版 (1st Edition)

1.0

2021-07-26

初版 (1st Edition) ライセンス変更(CC-BY)

1.1

2022-03-08

デフォルトブランチをmainに変更

この文書について
GitLab 入門
発行

農林水産研究情報総合センター
農林水産省 農林水産技術会議事務局 筑波産学連携支援センター 情報システム課

問い合わせ総合窓口
E-Mailrequest  affrc.go.jp

農林水産研究情報総合センター URL
URL

https://itcweb.cc.affrc.go.jp/

この文書は、 クリエイティブ・コモンズ 表示 4.0 国際 ライセンス の下に提供されています。

32