目次

GitLab入門 GitLab入門 AsciiDoc文書作成入門

GitLab入門

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

1. はじめに

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

2. GitとGitLab

2.1. 基本知識

2.1.1. バージョン管理

プログラムソースコードやテキスト文書、ファイルの変更履歴(バージョン)を管理することで、過去の変更箇所を確認したり、特定の時点の内容に戻すことが可能となります。

ファイル名に「最新」や「日付」をつけて履歴管理すると、どのファイルが最新の正しいものかが分かりにくくなります。
バージョン管理システムを使うことで、何時、誰が変更したといった履歴の記録や特定時点のファイルを取り出すことが可能となります。

2.1.2. Git

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

Git公式サイト https://git-scm.com/

git install win 01

図 1. Git公式サイト

2.1.3. GitLab

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

GitLab日本語情報サイト https://www.gitlab.jp/

gitlab jp web

図 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の場合

git install win 12

図 3. 改行コードの取り扱いオプション

3.2. Git初期設定

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

git bash 01

図 4. Git Bash 画面イメージ

Gitでは、誰が変更したのかを記録するために、ユーザ名とメールアドレスを登録する必要があります。

3.2.1. 日本語ファイル名を使う場合

Gitで日本語ファイル名を取り扱う場合、文字化けすることがあります。
(バックスラッシュ \ でエスケープされた文字コードが表示される)

3.3. SSH認証キーの作成

リモートリポジトリと通信する場合に、SSHの公開鍵で認証します。
http(s)での利用も可能ですが、SSHの利用をお勧めします。

3.4. GitLab公開鍵登録

作成したSSH公開鍵(~/.ssh/id_ed25519.pub)を、GitLabに登録します。

gitlab 20 gitlab 19
SSH鍵メニュー 設定メニュー

gitlab 21

図 5. SSH公開鍵登録

4. プロジェクト作成

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

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

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

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

gitlab 07

図 8. ローカルリポジトリ作成手順

4.3. 初期ファイルを登録(commit & push)

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

5. ファイルの更新

5.1. GitLabの編集機能

GitLabには、テキストファイルの編集機能があります。markdownやasciidoc形式にも対応しており、最初に作成したREADME.mdやWikiなどの編集が可能です。

  1. GitLabのプロジェクト「GitLab入門」のREADME.mdファイルをクリックします。 gitlab 11 図 9. README.mdファイルを選択
  2. 空のファイル(Empty file)であることが確認できます。「編集」をクリックして、内容を書き込みます。 gitlab 12 図 10. README.mdファイルの表示 gitlab 14 図 11. README.mdファイルを編集
  3. markdownなどは、プレビュータブで、記述内容のプレビューができます。 コミットメッセージを入力して、「Commit changes」をクリックします。 gitlab 15 図 12. 内容のプレビューと確定(コミット)

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

5.3. ログ表示(git log)

5.4. PC(ローカルリポジトリ)でのファイル作成

5.5. コッミット(Gitへの登録)

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

6. Gitの基礎

Gitを使ってバージョン管理する上で必要な、基本的な知識を説明します。

3, //準備//を参照して、Gitの利用環境を準備してください。

6.1. 3つの状態

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

git start 01

図 13. Gitの3つのエリア

  1. 作業ツリー(ワーキングツリー)
    • 1つのGitプロジェクトのためのファイルやディレクトリが格納されている。 実際に、このディレクトリ内のファイルに対し、編集、更新等を行います。 リモートリポジトリからクローン(clone: コピー元の情報を記録した状態で、Gitリポジトリをコピー)したときに、コピーされます。
    1. 修正済み状態
      • ファイルを編集、修正を行った状態で、Gitには、修正が反映されていない状態。
  2. ステージングエリア
    • 修正済み状態のファイルを、次のコミットに含めるファイルの情報を格納している。インデックスとも呼ばれる。
    1. ステージ済み状態
  3. ローカルリポジトリ(.git ディレクトリ)
    • ローカルのデータベースに、ファイルの内容、履歴情報などが格納されている。
    1. コミット済み状態

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

6.2.1. リモートの修正をローカルに反映

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

6.2.2. ワーキングツリーのファイルを修正

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

6.2.3. リモートリポジトリに修正を反映

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

6.2.4. status (git status)

6.2.5. 変更履歴(log)

6.2.6. 差分表示(git diff)

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

Visual Studio Code (VSCode)は、マイクロソフトが無料で公開している軽量なコードエディタで、拡張機能を使用してGitやGit Bashと連携した統合開発環境として利用できます。

VSCodeは、Windows, macOS, Linuxなどに対応しており、どのOSでも同様の使い方が可能です。また、プログラム開発だけではなく、拡張機能によりmarkdownやasciidoc,LaTeXなど文書作成環境としても利用できます。

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

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

7.1.1. 拡張機能

VSCodeは、拡張機能を追加することで、使い勝手が良くなります。 お勧めの拡張機能を紹介します。

7.1.2. ターミナルの規定のシェル設定

Git Bashがインストールされていれば、ターミナルを開いてコマンドでの操作ができます。 クローン(git clone)やpull, pushなど、リモートリポジトリのSSH鍵認証などの操作をVSCodeから行う場合不具合があり、コマンドでの操作の方が簡単です。

7.2. Gitの操作

7.2.1. リポジトリを開く

gitlab vscode 01

図 21. フォルダーを開く

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

gitlab vscode 02

図 22. ステージング

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

7.2.3. コミット(git commit)

gitlab vscode 03

図 23. コミット

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

7.2.4. ログ(git log)

gitlab vscode 04

図 24. ログ

vscode git bash 12

図 25. ログ詳細

vscode git bash 14

図 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-with-mic,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の使い方を追加した。
 
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 push
Enter 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 -> main

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 カレント行の末尾にテキストを入力
i カーソルの前にテキストを入力
I 行の先頭にテキストを入力
o カーソル位置の下にテキストを挿入する空行をオープン
O カーソル位置の上にテキストを挿入する空行をオープン

8.2. ファイルのセーブと終了

編集したファイルを保存して終了するには、 ZZ (大文字)とします。 ただし、「挿入モード」の場合は、 [Esc] キーを押して「ノーマルモード」にしてから、 ZZ とタイプします。

ファイルを保存するだけの場合は、 :w とします。 別名で保存するには、 :w filename とファイル名を指定します。

何も編集をしていない状態で終了する場合は、 :q とタイプします。 終了と保存を同時にするには、 :wq とタイプします( :wqZZ は同じ)。

編集した内容がめちゃくちゃで、最初から編集をし直したい場合は、 :e! としてファイルを再読込します。 また、編集内容を破棄して強制終了するには、 :q! とします。

8.3. 基本的な編集操作

8.3.1. カーソルを移動する

viでカーソルを移動するには、「j」「k」「l」「h」キーを使います。


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

8.4. テキスト削除

削除コマンド x を使うと、カーソル位置のテキストを削除します。 単語単位削除は dw 、行削除は dd を使います。

さらに、これらのコマンドの前に数字を入力すると、コマンドの対象範囲が指定できます。 例えば、 2x は 2 文字、 2dw は 2 word、 2dd は 2 行の削除となります。

8.4.1. 文字コード, 改行コードを指定して保存

vim でファイルを開き、任意の文字コードでファイルを保存 (変換) ができます。

vim でファイルを開き、vim のコマンドモードで以下のコマンドで文字コードを指定すると、保存するときに、指定した文字コードに変換されます。

8.4.2. 文字コードを指定

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

8.4.3. 改行コードを指定

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

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

:w

8.4.5. 文字化けしたファイルを開き直す

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

ファイルを開き文字化けした場合は、以下のコマンドでファイルを開き直します。

:e ++enc=文字コード

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

:e ++ff=改行コード

付録 A: 参考情報

参考文献

改版履歴

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-Mail request AT affrc.go.jp
農林水産研究情報総合センター URL
URL https://itcweb.cc.affrc.go.jp/
byこの文書は、 クリエイティブ・コモンズ 表示 4.0 >国際 ライセンス の下に提供されています。