すでに、稼働しているプロジェクト(ディレクトリ)のGit管理を始める手順です。
GitのホスティングサービスとしてGitLabを用いていますが、考え方は、GitHubやCodeCommitなど、他を用いた場合でも使えます。
環境
- OS: Amazon Linux2
- GitLab
前提条件
- GitLabアカウントは作成済とします。
ディレクトリ構成
Git管理したいプロジェクトのディレクトリ構成は以下の通り。
dog
|
|----dog.php → 処理プログラム
|
|----temp → 一時ファイル用のディレクトリ:配下のファイルはGit管理対象外
| |----aaa.temp
| |----bbb.temp
| |----ccc.temp
| :
| :
|
|---batch
|----dogBatch.php
|----logs → ログファイル用のディレクトリ:配下のファイルはGit管理対象外
|----aaa.log
|----bbb.log
|----ccc.log
:
:
このうち、
- temp:一時ファイル用のディレクトリのため
- batch/logs:ログファイル用のディレクトリのため
は、Git管理の対象外とします。
手順
以下、適宜、sudoを付けて実行してください(Amazon Linux2の場合)。
1. Gitのインストールと初期設定
(1) 以下のコマンドを実行し、Gitをインストールしましょう。
$ yum install git-all
(2) 次に、ユーザー名とメールアドレスを設定します。
$ git config --global user.name "hoge"
$ git config --global user.e-mail "hoge@example.com"
(3) 設定内容を確認します。以下のように、設定した内容が表示されればOKです。
$ git config --list
user.name=hoge
user.email=hoge@example.com
2. ローカルリポジトリで、Git管理を始める
ここで、ローカルリポジトリとは、今回Git管理を始めるサーバ上のプロジェクト(ディレクトリ)を指しています。
以下の作業は、原則Git管理したいプロジェクト直下(本手順ではdog直下)で行うようにしてください。
(1) まず、treeコマンドを実行してディレクトリ構成を把握しましょう。
この段階で、どのディレクトリもしくはファイルをGit管理の対象とするか決めます。
$ tree
.
├── batch
│ ├── dogBatch.php
│ └── logs
│ ├── aaa.log
│ ├── bbb.log
│ └── ccc.log
├── dog.php
└── temp
├── aaa.tmp
├── bbb.tmp
└── ccc.tmp
(2) リポジトリの初期化をします。
$ git init
(3) (1) でGit管理しないと決めたディレクトリのうち、ディレクトリそのものは残したいものに対し、配下に隠しファイルを作成しておきます。
$ touch temp/.gitkeep
$ touch batch/logs/.gitkeep
今回は、「ディレクトリ構成」でも記載の通りのtempディレクトリと、batch/logsディレクトリ配下に隠しファイル.gitkeepを作成しました。
このファイル名はなんでもよいのですが、いい加減な名前をつけると後々問題になりかねないので、.gitkeepのような分かりやすい名前にしておくのがよいでしょう。
(4) .gitignore(= Git管理したくない対象を記載するファイル)を作成します。
touch .gitignore
(5) .gitignoreをvimで開き、以下を書き込み、保存します。
batch/logs/*
!batch/logs/.gitkeep
temp/*
!temp/.gitkeep
上記のように記述することで、Git管理したくないディレクトリに対し、ディレクトリを残すための隠しファイルのみGit管理の対象とすることができます(=ディレクトリ自体もGit管理の対象となります)。
詳しくは、
.gitignoreの否定文(!)でハマったところ | Qiita
辺りをご参照ください。
(6) 続いて、以下のコマンドを実行して、Git管理対象をステージングにあげましょう。
$ git add .
(7) git statusコマンドを実行して、ステージングに上がっているファイル、ディレクトリを確認します。
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
new file: batch/dogBatch.php
new file: batch/logs/.gitkeep
new file: dog.php
new file: temp/.gitkeep
上記のように、.gitignoreで、Git管理対象外としたものが含まれていなければOKです。
(8) 変更をコミットします。
$ git commit -m "first commit of dog"
3. GitLabで、リモートリポジトリを作成する
(1) GitLabにログインし、「New project」をクリックします。
(2) Linuxサーバ上のローカルリポジトリをまるっと反映させるので、「Create blank project」をクリック。
(3) プロジェクト名を入力し(①)、プロジェクトの説明(Project description)や、可視化レベル(Visibility Level)などを適宜変更し、「Create project」をクリック(②)。
(4) プロジェクトが作成されたら、「Clone」をクリックして(①)、その後に表示される「Clone with HTTPS」の「Copy URL」をクリック(②)
4. ローカルリポジトリとリモートリポジトリの同期
2で作成したローカルリポジトリをリモートリポジトリに反映させます。
(1) ローカルリポジトリにて、以下のコマンドを実行しましょう。
$ git remote add origin [3-(4)でコピーしたURL]
この後、ユーザー名とパスワードを聞かれるので、GitLabのアカウントのそれらを入力します。
(2) 続いて以下のコマンドを実行し、ローカルリポジトリのmasterブランチをリモートリポジトリのmasterブランチとして反映させます。
$ git push -u origin master
(3) GitLabのページをリロードし、ローカルリポジトリの内容が反映されていれば成功です!
終わりに
ポイントは、何を管理対象から外すか。
余分なファイルをGit管理に含めないようにしましょう。