雑記

ものを書く練習。学びをまとめる場。

git のキソのキソ 2

おはようございます。今日は寝坊してしまいました...

早起きを習慣化していきたいのですが、前日の夜にこなすタスクがしっかりあるとなかなか難しいですね。

(あと朝起きた時、尋常じゃないほど鬱なのどうにかしたい)

では、前回に引き続き git についてお話ししていきたいと思います!

リポジトリ

前回、git のホスティングサービスを利用してオンライン上に他の人と共有できるディレクトリを作成できることをお話ししたと思います。

この「他の人と共有できるディレクトリ」という表現は、実は間違っているんですよね 笑

どういうことか説明していきたいと思います。

ディレクトリとリポジトリ

そもそも git というのは、少し難しい表現にはなってしまいますが一言でいうと、「分散型バージョン管理システム」です。

どういうことかというと、サーバに Git というアクセスできるデータベースが一つある、というわけではなくて、サーバにも各々のPCにもデータベースが存在している、ということです。

ここでいうデータベースとは、ソースコードなど全てのデータのバージョンを管理・保持しているものを指します。1

データベースが貯蓄されているのが文字通り「リポジトリ」であり、当然のことながら「ディレクトリ」とは全く別物です。
( 筆者はこのことの理解をせずに git を使おうとしてはうまく行かず失敗ばかりしてました )

ここで、サーバにある Git というデータベースのことを「リモートリポジトリ」、各々のPCにある Git というデータベースを「ローカルリポジトリ」と呼びます。

実際の動き

ではどのようにデータがリポジトリに記録されていくのか、仕組みを簡単に説明します。実際に使うコマンドも記載しておきますね。

例えばあるプロジェクトに参加することになり、そのバージョンが git で管理されていたとします。

まずはそのリモートのリポジトリを自分のPCにコピーしてローカルリポジトリを作成します。
コマンド: git clone (リモートリポジトリのurl)

そこには今までにあった変更が全て記載されているので、もちろん自分のPCには今のディレクトリに、そのプロジェクトで作成されたデータと隠しディレクトリとして .git ファイルが存在します。

そのデータに自分が変更を加えたなら、ローカルリポジトリに変更した内容を書き加えます。
コマンド: git add (変更したファイル) 2

さらにリモートリポジトリにその変更を書き加える前に、その変更についてのコメントを書き加えます。
コマンド: git commit -m "こんな変更をしました"

ここまでしたらリモートに push したいところですが、筆者はその前にコンフリクトを起こさない為にも、先にリモートリポジトリの変更をローカルリポジトリに書き加えます。
コマンド: git pull origin master

これが全て確認できてから、リモートに push します。
コマンド: git push -u origin master

まとめ

これが git のキソのキソだと思います。これさえ分かっておけば、とりあえずは困らないかと。

正直これより先の git の基礎の内容は自分もまだ勉強中なので、理解し次第 git シリーズとしてまとめていきたいですね!

参考

まずはGitの仕組みを理解することから - Qiita


  1. もっとわかりやすくいうと、ソースコードが書き換えられたとき「それが変更されたこと」の記録もデータベースの一部です。

  2. git add .で全てのファイルを add できます。