Git初期設定クローズド勉強会|WDSG策定チーム[#03]
6月2日(日)20時よりWDSG策定チーム内にて、Git初期設定クローズド勉強会をZoomで開催しました。
いなとみさん(@inatomi1717)にお願いして、GitHubとSourceTreeを連携する一連の初期設定をみんなで勉強しました。
今回は、Git初期設定クローズド勉強会で利用したドキュメントを、公開議事録として掲載します。
※MacOSをベースに解説します。
WDSG(Web Developer's Sharing Guidelines)とは、Webサイト制作関係者がガイドラインを共有することで、クリエイティブに集中できる環境を作るプロジェクトです。
1.Gitってなに?
Gitは黒い画面にコマンドをバシバシ打って使う、プログラマー専用のツールです(違う)。
Gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
変更履歴を記録・追跡しているので、指定したバージョンへ戻ったり、チームで制作を行うときにとても便利なツールです。
2.リポジトリってなに?
リポジトリの分かりやすい解説は、以下の記事をご覧ください。
履歴を管理するリポジトリ|サルでもわかるGit入門
https://backlog.com/ja/git-tutorial/intro/02/
このGitのリモートリポジトリを提供するサービスのひとつが[GitHub]で、Git管理用のGUIクライアントが[SourceTree]です。
3.必要なアプリとサービス
1)SourceTree
Git管理用のGUIクライアントです。
公式サイトURL:https://ja.atlassian.com/software/sourcetree
2)GitHub
リモートリポジトリを提供してくれるサービスです。
公式サイトURL:https://github.com
3)SSHクライアント
SSH(セキュアシェル)でサーバーに接続する必要があるので、SSHクライントが必要です。
MacOSでは標準アプリの[ターミナル]を利用します。WindowsOSは[Tera Term]などのアプリが必要です。
まずは上記サービスを登録します。
4.ローカルマシンへGitをインストール
まず、Gitがローカルマシンにインストールされているか確認します。
ターミナルを立ち上げて、以下のコマンドを入力します。
$ git --version
※上記のコマンドが使えずに、以下の内容が表示される場合があります。
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
この場合は、以下のコマンドでxcodeをインストールすることで解決します。
$ xcode-select --install
A)Gitがインストールされている場合
すでにローカルマシンへGitがインストール済みの場合は、以下の内容が表示されます(バージョンが違うことがあります)。
git version 2.20.1 (Apple Git-117)
B)Gitがインストールされていない場合
Gitがインストールされていない場合は、以下の内容が表示されます。
-bash: git: command not found
(B)のGitがインストールされていない場合は、以下のコマンドでGitをインストールします。
$ sudo yum -y install git
5.SourceTreeとGitHubの紐付け
5−1)SSH認証の公開鍵と秘密鍵を作成
ターミナルに以下のコマンドを入力します。[test@gmail.com]はご自身のものへ変更してください。
$ ssh-keygen -t rsa -C [test@gmail.com]
鍵を保存する場所を聞かれるので、このまま[Enterキー]を押します。
Enter file in which to save the key (/Users/evitch/.ssh/id_rsa):
パスフレーズを2回入力します(何も入力せずに実行して良いです)。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/evitch/.ssh/id_rsa.
SSH認証の公開鍵と秘密鍵が作成されたので、ファイルを確認するために以下のコマンドを入力します。
ファイルは[id_rsa:秘密鍵][id_rsa.pub:公開鍵]です。
//.ssh移動
$ cd ~/.ssh
// 現在のディレクトリに存在するファイルを確認
$ ls
以下の内容が表示されれば、問題なくファイルは作成されています。
id_rsa id_rsa.pub
以下のコマンドでファイルのパーミッションを確認します。
// 現在のディレクトリに存在するファイルのパーミンションを確認
$ ls -al
[id_rsa]のパーミッションが[600]であれば問題ありません。
// id_rsaが、600になっていることが分かる
-rw------- 1 inatomitakahiro staff 1823 2 17 18:39 id_rsa
パーミッション早見表
http://hayakawa.ddo.jp/beginner/ux/permit.html
[id_rsa]のパーミッションが[600]でなければ、以下のコマンドでパーミッションを変更します。
// id_rsaのパーミッションを変更
$ chmod 600 id_rsa
重要:
鍵にパスフレーズを設定した場合のみ、以下のコマンドを実行する。
これでssh-agentに鍵を登録しないと、SourceTreeが正常に鍵情報を読み込んでくれません。
// 鍵にパスフレーズを設定した場合は以下を実行
$ ssh-add -K
以下のコマンドで[~/.ssh/]ディレクトリに[config]ファイルを作成します。
// config作成
$ touch config
作成したconfigファイルを編集するため、[viコマンド]でエディタを開きます。
// configファイルを編集するためにviエディタを開く(ファイルの中が見える状態)
$ vi config
viエディタが開いた状態(ファイルの中が見える状態)で[Iキー]を押すと、insertモード(編集モード)に切り替わり、configファイルの中を編集可能になります。
編集モードの状態で、configに以下を入力します。
// 以下の内容をコピペで貼り付ける。
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa
User git
貼り付けが完了したので、insertモード(編集モード)を解除するために[ESCキー]を押します。
そして[:wq]コマンドで[編集した内容を保存]+[viエディタを閉じる]を実行。([:w](保存)と[:q](エディタを閉じる)という命令を同時に実行している。)
configファイルの設定が完了しました。
5−2)GitHubへ公開鍵を登録
(1)GitHubにログインした状態で、画面右上のアカウント画像をクリックします。
(2)ドロップダウンメニューの中から[Settings(設定)]をクリックします。
(3)[Settings(設定)]ページの[SSH and GPG keys]をクリックします。
(4)[SSH Keys]の[New SSH key]ボタンをクリックします。
(5)[Title(タイトル)]には任意の名前を入力し[Key(キー)]には以下のコマンドで、ターミナルからクリップボードにコピーした[Key(キー)]を貼り付けます。
// クリップボードにid_rsa.pubの内容をコピー
$ pbcopy < ~/.ssh/id_rsa.pub
5−3)SourceTreeの設定
(1)[SourceTree]ツールバーの[環境設定…]から、アカウント画面を開きます。
(2)[追加]をクリックし、ホストを[GitHub]に[接続アカウント]をクリックします。
(3)ブラウザへジャンプするので[SourceTreeを開く]をクリックすると、SourceTreeにGitHubのアカウントが連携されます。
参照記事:
https://qiita.com/evitch/items/5d87b8aab5cd72695d2b
6.リモートリポジトリ
GitHubにログインして、以下のページを開きます。
Create a new repository
https://github.com/new
(1)[Repository name]に利用したい名前を入力します。
(2)公開できないプロジェクトは[Private]を選択します。
(3)[Initialize this repository with a README]にチェックを入れます。
(4)[Create repository]をクリックして作成します。
これで、リモートリポジトリの設定は完了です。
7.ローカルリポジトリ
まず、リモートリポジトリから[クローン]を行います。
(1)GitHubにログインした状態で、画面右上のアカウント画像をクリックします。
(2)ドロップダウンメニューの中から[Your repositories]をクリックします。
(3)先ほど作成したリモートリポジトリのリンクが表示されるので、クリックします。
(4)[Clone or download]をクリックして[Clone with SSH]のURLをコピーします。
(5)[Source tree]を立ち上げて、[新規…]から[URLからクローン]を選択します。
(6)[ソースURL]に先程のURLを入力します。
(7)[保存先のパス]を設定します(ローカルマシンに保存するディレクトリを指定します)。
(8)[名前]にリモートリポジトリの名前を入力します(自動で入力されます)。
(9)[クローン]をクリックします。
以上で、ローカルリポジトリの設定は完了です。
8.Gitの仕組み
Gitの仕組みについて簡単にご紹介します。
commit:
ファイルの追加や編集、削除をリポジトリに記録するために[コミット]を行います。[コミット]を実行するときには[コミットメッセージ]を入力する必要があります(必須です)。
push:
ローカルリポジトリの変更をリモートリポジトリに反映させることを[プッシュ]と呼びます。
pull:
リモートリポジトリにある最新の変更を、自分のローカルリポジトリに反映させることを[プル]と呼びます。
merge:
他の履歴での変更を取り込むことを[マージ]と呼びます。
fetch:
pullを実行すると、リモートリポジトリの内容のマージが自動的に行われてしまいます。 しかし、単にリモートリポジトリの内容を確認したいだけの時はマージをしたくない場合もあります。
そのような時はfetchを使用します。fetchを実行すると、リモートリポジトリの最新の履歴の取得だけを行うことができます。
Gitの詳しい情報は以下のサイトを参照してください。
サルでもわかるGit入門
https://backlog.com/ja/git-tutorial/
9.デプロイ環境(本番サーバー)に適用
まず、ターミナルでSSH接続するために、以下のコマンドを入力します。
// デプロイ環境へのログイン
$ ssh ユーザー名@ドメイン
// パスワードを聞かれるのでパスワード入力
以下、サーバー内を移動したり、ファイルの中を見るためのコマンド一覧です。これらのコマンドでGit管理を行うディレクトリへ移動します。
// 今いるディレクトリがルートから見てどの位置にあるか知りたい
$ pwd
// 今いるディレクトリの中を見たい
$ ls
// 移動したい場所へいく
$ cd git管理したい場所へのパスを入力
// cdでルートに行きたい時
$ cd /
// cdで一階層上に戻りたい時
$ cd ../
Git管理を行うディレクトリへ移動した状態で、リモートリポジトリから以下のコマンドでファイルを[pull]します。
$git clone https://ina-taka2:aoihpadf76apfija@github.com/ina-taka2/test.git .
// リモートの変更を適用したい場合
$ git pull origin master
※本番環境にすでにファイルがある場合
本番環境にすでにファイルがある場合は、通常だと最初のpullやcloneがうまく出来ません。そのような場合は、以下のような手順で行うと良いです。
(1)本番環境にあるファイルをすべてローカルリポジトリにダウンロードします(FTPを利用)。
(2)ローカルリポジトリからリモートリポジトリへ[push]します。
(3)デプロイ環境(本番環境)にSSH接続して、リモートリポジトリからファイルを以下のコマンドで[pull]します。
// 本番環境のGit管理したいディレクトリ上で行う
$ git fetch origin
$ git reset --hard origin/master
10.最後に
勉強会で利用したドキュメントを基にリライトしているので、分かりづらくてすみません(専用Slackへジョインして頂ければ録画データを見れます)。。。
環境の構築は慣れるまでが大変ですが、こうしてみると意外と簡単にGitの初期設定は行えることが分かりました!
具体的なGitの利用方法の勉強会を開いたときには、またnoteで記事にしたいと思います。
11.WDSG策定チーム専用Slack
WDSG策定チームは、専用Slackで一緒に意見交換をしてくれるメンバーを募集しています!
意見出しチャンネルで制作方法について質問したり、判断に迷っていることや制作の悩みなど、自由な雰囲気で意見交換を行いながら、少しずつガイドライン化を進めています。
この活動が気になった方は、是非とも僕のTwitter(@design_hikaru)へご連絡ください!
最後までお読み頂き、ありがとうございました!
サポート頂いたお金は交通費などの活動資金として、大切に使わせてもらいます^^