Web プログラミング

【もりけん塾22日目】githubに草を生やしに苦戦【Gitの基礎を学ぶ】

githubで草をはやしたくて悪戦苦闘しているねこらのん(@nekoranon256)です。

 

もりけん塾のgithubの勉強会に参加できませんでしたが、haruさん(@fuwafuwahappy)が記事【GitHub勉強会】GitHubに草を生やす方法【day58】で記録してくれているので、こちらを見つつ挑戦中。

 

ただPC初心者のため自分のPCと相性が悪いのかなかなかすすみません…ので今日の挑戦結果をまとめました!

 

【githubに挑戦】Mac、ターミナルとのたたかい

haruさん(@fuwafuwahappy)の記事【GitHub勉強会】GitHubに草を生やす方法【day58】を見つつ挑戦中!

 

昨日はGitHubの新規リポジトリをローカルに取り込みまですすみました!

 

しかしユーザー名とメールアドレスを登録がすんでいないということが、今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説の記事で分かったのでこちらを今日はやっていきました!

 

準備①ターミナルでユーザー名とメールアドレスを登録

記事を読みつつターミナルを起動してユーザー名とメールアドレスを登録!

 

が、できませんでした。

 

理由が分からず、もりけんさん(@terrace_tech)に質問!

 

下のようなものが出てきて登録できているか不明です><

 

~ % $ git config --global user.name "~~~" $ git config --global user.email "~~~~@gmail.com 
dquote> 
dquote> 
dquote> $ git config --global user.name "~~~" $ git config --global user.email "~~~~@gmail.com
zsh: command not found: $

 

もりけんさん
gitのローカルリポジトリ内に移動していない時に出るエラーのような気がします。ls -laで.gitが表示されるか確認してみてください。gitを叩いているディレクトリ内で

 

gitを叩いているディレクトリ内に移動する必要があるということかな?

 

ここで分かっていないということはgitがまだ理解できていないということだから、次はドットインストールをみて初歩を学びつつ違うサイトを参考にすると先に進むことができました!

 

ファイルを作成し、作成したファイルまで行き再度名前とメールアドレスを作成したら登録できました

 

 

でもちがったんですよね…またこの失敗談の記事はアップしますね…!

Gitの全体像を知る【Gitの公式サイト】

もりけんさんに相談して、アドバイスをたくさんいただきました。

 

しかし理解していない私にとって2度同じことをすることが苦行…

 

するともりけんさんがアドバイスをくださいました!

素直に全体像を知るためにGitの公式サイトで学ぶことに。

 

公式サイトを読むことで以下のことが理解できるようになるようです。

 

  • バージョン管理の背景
  • Gitを私のシステムで動かす方法
  • Gitで作業を始めるための設定方法

 

 

Gitの公式サイトはコチラ

 

バージョン管理システム(VCS)について

「バージョン管理」はGitを調べていくなかで必須項目なので知識として知っておきたいもの。

 

<バージョン管理>

1つのファイルやファイルの集合に対して時間とともに加えられていく変更を記録するシステム。

あとで特定バージョンを呼び出すことができるようにするためのもの

 

よくわかりません…が、バージョン管理とはファイルの変更記録ができるシステムということでしょう!

 

具体的にバージョン管理で何ができるのかをみていきましょう!

バージョン管理システム(VCS)6のできること

バージョン管理システム(VCS)でできることは以下の6つ。

 

  1. ファイルを以前の状態までに戻せる
  2. プロジェクトまるごとを以前の状態に戻す
  3. 過去の変更履歴を比較
  4. 問題が起こっているかもしれないものを誰が最後に修正したか
  5. 誰がいつ問題点を混入させたかの確認
  6. ファイルを失っても復活可能

 

バージョン管理システムを使うことで問題点の確認することが可能なようです。

 

問題をさかのぼり、

  • 誰が
  • いつ
  • どこで
  • 何を
  • なぜ
  • どのように

5W1Hの確認が容易にできるシステムのように思えます。

 

問題を見つけるスピードがはやくなりそう…!

 

システムエラーになり不具合が生じると時間がかかって修正されるイメージですが、バージョン管理システムを用いることで最短で修正可能な作業ができそう!

 

3つのバージョン管理システム

バージョン管理システムは大きく分けて3つあります。

 

  • ローカルバージョン管理システム
  • 集中バージョン管理システム
  • 分散バージョン管理システム

 

それぞれ解説していきます!

①ローカルバージョン管理システム

ファイル保存ミスに有効なローカルバージョン管理システム。

 

バージョン管理下にあるファイルのすべての変更を保持するシンプルなデータベース

 

引用:Git

 

バージョン管理システムで有名なツールはRCS。

RCSはMac OS Xオペレーティング・システムでも入っているようです。

 

②集中バージョン管理システム(CVCS)

共同作業の問題を対処するのに有効な集中バージョン管理システム。

 

1つのサーバがバージョン管理されたファイルをすべて持つサーバー(中央サーバ)とファイルをチェックアウトするクライアントから形成されているもの

 

チェックアウトとはバージョン管理システムから作業ディレクトリにファイルやディレクトリをコピーすること

 

引用:Git

 

集中バージョン管理システムのメリットは、

  • プロジェクトに関わっている人が何をしているか把握可能
  • 誰が何ができるかを細かくコントロール可能

です。

 

他者のスキルを把握できて管理できると仕事の進捗具合が分かってよさそう…!

 

メリットだけではなく、デメリットも。

 

中央サーバ障害

 

この中央サーバ障害が起きれば、誰も作業をすることができないという弱点…!

 

この中央サーバ障害が起こると履歴データがすべて失う可能性がある…

 

③分散バージョン管理システム(DVCS)

1つのデータにすべての責任を担ってもらう集中バージョン管理システムのデメリットをカバーする分散バージョン管理システム。

 

ある1つのサーバが故障してもクライアント・リポジトリの1つをコピーすれば修復が可能なシステム

 

引用:Git

 

複数のリモート・リポジトリで作業することも可能。

 

  • 違う方法で
  • 違う人々のグループと
  • 同時に同じプロジェクト内で

共同作業が可能なシステム。

 

 

分散してリスクを低減させたシステムだと安心して作業に取り組めそう…!

 

分散バージョン管理システムはGit、Mercurial、Bazaar、Darcsがある。

 

 

Gitの基本

バージョン管理システムについての知識を入れた後は本題のGitについて。

 

Gitは変更履歴を管理する分散型のバージョン管理システムのこと

 

Gitについて。

  1. スナップショットで、差分ではない
  2. ほとんどすべての操作がローカル
  3. Gitは完全性を持つ
  4. Gitは通常はデータを追加するだけ
  5. 作業ディレクトリ・Gitディレクトリ・ステージングエリアの3つ

簡単に解説してきます。

 

スナップショットで、差分ではない

Gitはファイルが以下のスナップショットのように保存されている。

引用:Git

変更しやすい。

 

ほとんどすべての操作がローカル

ほとんどすべての操作がローカル環境でできるので、手間がかからない。

 

Gitは完全性を持つ

Gitは通信中にファイルの改ざんがされていないかの確認ができる。

 

Gitは通常はデータを追加するだけ

Gitはデータを追加するだけでOK。

 

作業ディレクトリ・Gitディレクトリ・ステージングエリアの3つ

Gitを使う上で主要な部分なので覚える必要があるところ。

 

Gitは

  • コミット済:ローカル・データベースが安全に格納されている
  • 修正済:ファイルに変更を加えるがデータベースにまだコミットされていない
  • ステージ済:次のスナップショットのコミットを加えるために現在のバージョンの修正されたファイルに印を付けている状態

この3つが主要な状態。

 

引用:Git

 

流れは

  1. 作業ディレクトリでファイル修正
  2. 修正されたファイルのスナップショットをステージングエリアにあるファイルを取得
  3. コミットする。

です。

 

それぞれ解説していきます。

 

Gitディレクトリについて

プロジェクトのためのメタデータとオブジェクトのデータベースがある場所。

 

Gitの最重要部分で他のコンピューターからリポジトリをクローンしたときにコピーされるもの。

 

コピー元の情報を記録した状態で、Gitリポジトリをコピーすること

作業ディレクトリについて

プロジェクトの1つのバージョン単一チェックアウト。

 

Gitディレクトリの圧縮されたデータベースから引き出されて利用するか修正するためにディスクに配置されるもの。

ステージング・エリア(インデックス)

普通はGitディレクトリに含まれる。

 

次のコミットに何が含まれるかに関しての情報を蓄えた一つのファイル。

Gitができること

Gitは以下のことができます。

 

  • ファイルの変更履歴を管理
  • チームで共有可能
    誰がどの部分を編集したかが履歴で残るため
  • 過去ファイルに戻すことが可能
  • コード、EXCELファイル、画像などなんでも管理可能

 

なんでも管理が可能でチームで共有できるのはとても便利ですね!

 

コマンドライン

Gitは公式のコマンドラインツールがあり、グラフィカルユーザーインターフェースよりもGitのコマンドラインツールを使う理由が2つある。

 

  1. Gitのコマンド郡をすべて実行可能なのがコマンドライン
  2. コマンドラインツールは全員が同じものを使うことになる

 

グラフィカルユーザーインターフェース(GUI)はユーザーインターフェースの1つ。情報提示に画像や図形を用い、画面上の位置をマウスなどを使って指示する

 

なのでMacならターミナル、WindowsならコマンドプロントやPowerShellを用いる。

Gitの環境構築

最新版のGitをPCにインストールした状態でGit環境を構築!

 

Gitをアップグレードしても設定の引き継ぎはあるそうです!

 

定期的に設定しなくて良いので楽ですね…!

 

'git config'は3つの異なる場所に格納される

git cinfigは以下の異なる3つの場所に格納されます。

  1. /etc/gitconfig ファイル
  2. ~/.gitconfig か ~/.config/git/config ファイル
  3. 現在使っているリポジトリのGitディレクトリにある`config`ファイル

 

 

/etc/gitconfig ファイルはシステム上のすべてのユーザーとすべてのリポジトリに対する設定値を保持するもの。そして/etc/gitconfig ファイルが優先されます。

個人の識別情報【注意:Gitのローカルリポジトリ内に移動してからすること】

GitをPCにインストールしたら最初にすべきことがあります。

 

  • 名前
  • Emailアドレス

 

すべてのGitのコミットはこの情報を用いるため非常に重要です。

ターミナル上でgitがあるディレクトリ内でこちらを入力!

$ git config --global user.name "ここに名前を入れる"
$ git config --global user.email アドレスを入れる@example.com

 

Gitのローカルリポジトリ内に移動していない状態でするとエラーが生じます!

 

私は実際にGitのローカルリポジトリ内ではない場所で行った結果以下のようになりました。

~ % $ git config --global user.name "名前" $ git config --global user.email "アドレス 
dquote> 
dquote> 
dquote> $ git config --global user.name "名前" $ git config --global user.email "アドレス
zsh: command not found: $

 

 

経験済みなのでご注意を…

設定の確認

git config --list』はその時点でGitが見つけられるすべての設定を一覧するコマンド

 

ユーザー名やアドレスなどを確認することができます。

 

これはさっそく使ったので結構使うのかなと思っています。

ヘルプをみる

Gitは最初よくわからないことがたくさんあります。

 

そんなときに使うのが以下の3種類のヘルプ。

$ git help <verb>
$ git <verb> --help
$ man git-<verb>

引用:Git

オンラインならどこでも見れるようなので困ったらこのコマンドで助けてもらおうと思います!

 

$ git help configでも良さそう…

おわりに

Gitの全体像の理解…まだまだ長くなりそうなので記事をわけます!

 

プログラミング全体的になめてたなぁ…><

 

記事の内容はほとんどGitの公式サイトからのものです。

 

詳しくはGitページへ

 

もりけん塾(@terrace_tech

Thanks:もりけんさん

 

もりけんさんの『武骨日記』へ

 

-Web, プログラミング

© 2020 Mayu_Yamada