GitHubとは
GitHub(ギットハブ) サービス提供元:米 GitHub社(保守対応も含め) ※2018年 マイクロソフトの傘下。
ソフトウェア開発のプラットフォーム。コードのバージョン管理システムにはGitを使用する。 複数人のエンジニアがリモートリポジトリとして活用する他、チーム開発を行うための機能を提供するWEBサービス。 リポジトリとしての機能を持つ他にも、コードレビュー機能やWikiなどのコミュニケーションツールとしての機能を持ち、組織規模を問わず、多くの企業・団体がソフトウェア開発で利用する。
GitHubにソースコードをホスティングすることで複数人のソフトウエア開発者と協働してコードをレビューしたり、プロジェクトを管理しつつ開発を行うことができる。
[用語]
| Issue | 課題、修正点 |
| Pull Request | |
| Files Changed | Pull Requestで表示されるファイルの変更数 |
| リバート | バージョニングを一つ一つ戻ること |
| ブランチ | 特定の変更点から分岐点までのこと |
| featture | 機能開発 |
| リポジトリ | バージョン管理によって管理されるファイルと履歴情報を保管する領域 |
バージョン管理基礎(バージョン管理システム)
〇Git(現場での使用率:高)【各端末へ分散型】 バージョン管理システムは大きく「集中型」と「分散型」に分けられる。
●分散型
- Git Hubと連携されているため、サーバーの構築は不要
- ファイルの追加や変更の履歴情報を管理することで、過去の変更箇所を確認する、特定時点の内容に戻す、などの「バージョン管理」という作業が可能となる
- 「分散型」のバージョン管理システムでは個々人のマシン上にリポジトリを作成して開発を行うことができ、現在のチーム開発における主流となっている。
- 分散型のバージョン管理システムであるGitでは、まず個々人のマシン上にあるリポジトリ上で作業を実施後、作業内容をネットワーク先のサーバー上などにあるリポジトリに集約する流れで開発を進めていく。 この個々人のリポジトリを「ローカルリポジトリ」、集約先となるリポジトリを「リモートリポジトリ」と呼ぶ。
・基本的な流れ
①ローカルリポジトリにリモートデータの取得
②ローカルリポジトリでファイル更新を履歴に反映
③リモートリポジトリでローカルのデータを反映
[補足]
- コメント、承認:レビューの申請と承認 → レビューで承認がないと統合されない
- 複数の各々のブランチを統合(マージ)するのが主流
- ブランチを作成すると、そのコードはブランチを作成する前のコードから分析し、「別の時間を生きる」こととなる。
- 別の時間を生きたコードは自分だけの経験(変更)を蓄える。
- 上記プロセスに問題がなければ、親(分岐元)は「マージ(記憶を統合)を要求」する
- マージは基本リモートリポジトリで実施する
●集中型 SVN【中央集権型】 ※管理するサーバーは自分で立てる
- バージョンを管理するリポジトリは単一。
- リポジトリが壊れても、スナップショットで復旧が可能。
- Gitに比べて容易であり、学習コストが低い。
- 特定の場所にあるリポジトリへの接続が必須となる。
機能
- ブランチ保護:GitHubは直接コミット禁止によるブランチの保護(保護されたブランチ/protected branches)を提供する。
- GitHubにホストされたリモートレポジトリはgit pushにより更新できる。 →これを許容すると意図しないバグによりpushを受けたブランチが壊れるリスクがある。
- GitHubは「指定ブランチへの直接コミット禁止 + チェック通過Pull Requestを介したmerge/rebase許可」という機能を提供することで、ブランチに問題のあるコミットが混入しないことを可能にしている。
コマンド
| git rm -rf {レポジトリ名} | git clone 削除 |
| git rm -rf .git | git 削除 |
| git ls-files –stage | インデックスの中身を見ることができる。 |
| git checkout「ブランチ名」 | ブランチへの移動 |
| git branch | ブランチ一覧表示 |
| git branch 「ブランチ名」 | ブランチ追加 |
| git branch -d 「ブランチ名」 | ブランチ削除 |
| git branch -D 「ブランチ名」 | ブランチ強制削除 |
| git clone | リモートリポジトリのクローンを生成 |
| git pull | gitリポジトリにある最新のソースコードを取得 |
| git add | インデックスにファイル等を認識させる |
| git reset HEAD | git add の取り消し |
| git commit | リモートリポジトリにファイル更新の差異を登録する |
| git push | リモートリポジトリへ差異を連携する |
[ローカルで削除した結果を反映させる方法]
git add -u # update option
git commit -m “deleted some files”
git push
add → commit → push
git push リポジトリ名(※origin) ローカルブランチ名:リモートブランチ名
Q&A
[GitHub ReadMe とは]
リポジトリに訪れた人に “このプロジェクトが何なのか” をわかりやすく伝えるための説明書のようなもの。
[ユーザー設定確認方法]
次のサイトを参考。(参考サイト)
[Git Cloneの意味]
リポジトリのクローンを作成して、コンピュータ上にローカルコピーを作成し、これらの2つの場所で同期することができる。 GitHub.comにリポジトリを作成した場合、それはリモートリポジトリとなる。 リモートリポジトリをそのまま自分のローカル環境(自分のPC上)へ複製(コピー)する機能。
GitHub.com からローカルコンピューターにリポジトリのクローンを作成して、マージの競合の修正、ファイルの追加または削除、より大きなコミットのプッシュを簡単に行うことができる。 リポジトリのクローンを作成する場合は、リポジトリを GitHub.com からローカルマシンにコピーする。
リポジトリをクローンすると、その時点で GitHub.com にあるすべてのリポジトリデータの完全なコピーがプルダウンされる。 これには、プロジェクトのすべてのファイルとフォルダのすべてのバージョンも含まれる。
[インデックスがなぜ必要か]
インデックスとは、リポジトリに保存されている情報とワークツリー(作業している場所)との差(変更箇所)を記録する場所。 その差(変更箇所)だけをリポジトリに保存していく仕組み
1年前の GitHub を掘り起こしてみた件
・端末を変更していたため、Gut用のディレクトリなどはない
→つまりローカルリポジトリから作製が必要になった。
※リポジトリへの接続設定がないか、念のため確認
git remote -v:他のリポジトリへのリモート接続の一覧を表示するコマンド
→ローカルの情報?
★ローカルのリポジトリ名変更方法
https://qiita.com/youth_case/items/78ac95c62ee4ceec628f
git clone
→リモートリポジトリの環境をローカルにもってくる
git reset HEAD:git add の取り消し
→念のため、git addの取り消しを実施
git add
→変更した内容を加える
*** Please tell me who you are.
Run
git config –global user.email “you@example.com”
git config –global user.name “Your Name”
to set your account’s default identity.
Omit –global to set the identity only in this repository.
→初回扱いであり、必要な情報を以下のように登録していく
git config –global user.email “magata.mnm47@outlook.jp”
git config –global user.name “SMYT”
git commit -a
→Commit処理
【エラー】Aborting commit due to empty commit message.
→初回のコミット時にメッセージがないため
git commit –allow-empty-message -m ”
git push origin mian:main
→成功
$ git checkout -b lecture02
Switched to a new branch ‘lecture02’
→ブランチ lecture02 を作成
$ git branch -a
- lecture02
main
remotes/origin/HEAD -> origin/main
remotes/origin/main
$ git branch -vv
lecture02 c2c147a
- main c2c147a [origin/main]
→作成されていることを確認
作成したディレクトリがGitHubに反映されない
→ファイルを中に作成しないと反映されないみたい

