Help us understand the problem. What is going on with this article?

Github(Git) 入門

はじめに

春ですね,ご入社,ご入学おめでとうございます.この時期にGithub入門する人も多いと思います.この記事はせっかく社内ドキュメント作るのなら共有しちゃおうというものです.特有の言い回しなどはかみ砕いて説明するので,多少の相違は了承ください.

なぜ必要? クラウドストレージと何が違うの?

更新の時系列がわからないディレクトリがあなたのパソコンにはありませんか? 版を管理することをバージョン管理といいますが,ソフトウェア開発,デザイン,文筆などあらゆることでバージョン管理は煩わしいものです.更にチームになるとこのようなファイルがクラウドストレージにあったら,チームメンバーは混乱してしまいます.個人でもチームでもこんなことに時間をさきたくないはずです.
スクリーンショット 2020-04-05 17.50.42.png
この煩わしさからGitは開放させてくれます.Gitは時系列順に版をスナップショットとして管理するバージョン管理システムです.Gitにcommitすることによって版が作成され更新されます.もとに戻したければ戻せますし,別バージョンを作りたければbranchを切ることによってできます.

スクリーンショット 2020-04-06 21.27.47.png

GitとGithub

Githubはバージョン管理システム(ソフトウェア)であるGitをクラウドサービスとして使えるようにしたもので,現在はMicrosoftによって運営されています.同等のサービスやソフトウェアとしてBitbucketやGitLabなどのプロジェクトがあります.

Bitbucket
GitLab

Gitはサーバークライアントとローカルクライアントが存在し,サーバーの方をサーバーに,ローカルをパソコンにインストールすることで使用します.Gitをサーバーにインストールすることによってバージョン管理サーバーとして,チーム内で共有することができるわけです.

スクリーンショット 2020-04-06 21.20.56.png

gitをローカルで使用する場合まず,

zsh
$ git --version #でバージョン情報を表示します.

#=== 以下戻り値 ====
-git version 2.21.0 (Apple Git-122.2) 
#インストールされている場合はこのようなバージョン情報が表示されています.
-git: command not found
#not foundが表示される場合はgitをインストールする必要があります.

not found の場合例えばmacでしたら,
$ brew install git
$ sudo apt install git
などを使いインストールします.これは個人の環境で違います.
インストールが終わったら,

zsh
$ git config --global user.email <your e-mail address>
$ git config --global user.name <your user name>

注意

このアドレスと名前はgithub上で世界に公開されます.

GithubとGitの使い方

gitはレポジトリ(リポジトリ)という単位でプロジェクトを管理します.レポジトリとはプロジェクトのディレクトリーのこととの認識で構いません.このレポジトリにはリモートとローカルが存在します.ローカルは自分のPC内にあるもので,リモートはそれをサーバーにアップロードした状態のことを言います.
プロジェクトのルートレポジトリにある.gitという隠しファイル(サブディレクトリ)に更新情報やリモートレポジトリの情報が記載されています.

Gitのフロートしては,clone して add して commit して pushします.
スクリーンショット 2020-04-06 21.42.22.png

1.レポジトリを作る

まずプロジェクトを始めるにあたってリモートレポジトリであるGithubにレポジトリを作成します.本来はレポジトリを作る場合,

zsh
$ mkdir hoge        #ディレクトリの作成
$ git init          #gitの初期化(.gitの作成)
$ touch readme.md   #説明書の作成
$ touch LICENSE     #Licenseファイルの作成

を実行する必要がありますが,Githubではレポジトリを作ると自動で,git initを実行してreadme.mdやLICENSE,.gitを作成してくれます.
スクリーンショット 2020-04-06 21.44.57.png
試しにhogeレポジトリを作ります.

2.clone

リモートレポジトリにあるレポジトリをローカルにダウンロードすることをcloneといいます.cloneするには任意の場所で,

$ git clone <hoge url or git>

を実行します.ダウンロードされたhogeは一見readme.mdとLICENSEだけですが,きちんと.gitが含まれています.

スクリーンショット 2020-04-06 22.01.12.png

Githubではこのcloneコマンドの他に,右上の緑色のボタンからzip形式でcloneすることもできます.プロジェクトメンバーで開発に参加していない人でも最新のzipを手軽にダウンロードすることが可能です.

スクリーンショット 2020-04-06 21.53.05.png

3.add

cloneした状態に新しいファイルを作成したならばaddが必要です.addはあたらしいファイルを管理リストに追加することです.これでファイルの変更を追従できるようになります.

zsh
$ git add -A

どのファイルが追加されていないかなどは

zsh
$ git status

で確認できます.
スクリーンショット 2020-04-06 22.03.44.png
追従していないファイルが表示されている.
スクリーンショット 2020-04-06 22.04.44.png
addをすることで追従される.

4.commit

既存のファイルを編集したときや,新しいファイルをaddしたときにはcommitをします.commitをすることで新しい版(バージョン)が作成されます.
どこまでやったらcommitするかは自由ですが,戻せない変更をする場合は,する前にかならずcommitします.セーブポイントできちんとセーブをしておけば,ラスボスで負けても再挑戦ができるわけです.

commitには何を変更したかcommit messageを添えます.

zsh
$ git commit -am "example commit"

またcommitした変更はコミット履歴という形で履歴に残ります.

zsh
$ git log

スクリーンショット 2020-04-06 22.06.20.png

5. push

commitはローカルストレージのプロジェクトディレクトリ内の.gitに記録されます.この情報をスナップショットと一緒にアップロードすることをpushといいます.
pushを行うことでリモートレポジトリを更新し最新にします.チームメンバーはgit pullをすることで,常に最新版を使うことができます.

zsh
$ git push origin master #masterブランチにpush
$ git pull

チーム開発の場合,大抵はmasterブランチにはpushをせずにそれぞれのバージョンのブランチにpushし,それをmergeすることでmasterを最新に保ちます.これはバグなどの影響を最小限に留めるためです.

スクリーンショット 2020-04-06 21.48.12.png
pushするまえ
スクリーンショット 2020-04-06 22.07.45.png
pushしたあと

GUIソフト

Sourcetreeなどを使えばterminalではなく視覚的なソフトからでもGitを操作することができます.
スクリーンショット 2020-04-06 22.23.08.png


以上,いちばん基本的なGit及びGithubの使い方でした.

参考

Git --distributed-is-the-new-centralized

murataka9
[ HCI / Mood Engineering ] 研究 / iOS / Rails / Python / TF . 雰囲気工学系の研究をしています.研究室ではメディアアートとUI/UXを研究しつつArduinoやDepthCameraをいじっています. 週末ディープランニング. #RAWDATANOW
https://kamiwork.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away