本講習会では、開発にあたり必要となるGit/GitHubの基本的な役割と使い方を共有します。 細かな仕様や使い方は、開発の中で調べながら利用することを前提とします。
- 分散型のバージョン管理システム
- 各開発環境に導入し、ファイルの変更履歴を記録する
- ソースコードの変更を取り消したり、状態を複製して別のブランチで作業することができる
- 複数人で同じ箇所を編集すると、コンフリクト(競合)が発生する。
- 実は差分管理ではない1(⁉)
- コミットはスナップショット
用語 | 説明 |
---|---|
リポジトリ | ファイルやディレクトリの状態を記録する場所。 ローカルリポジトリ:開発環境のリポジトリ リモートリポジトリ:GitHubなど |
コミット | ファイルやディレクトリの状態を記録すること |
ブランチ | 作業を分岐させること |
マージ | ブランチの変更を取り込むこと |
プルリクエスト | ブランチの変更を取り込むためのリクエスト |
コンフリクト | 競合が発生した状態 |
クローン | リモートリポジトリをローカルに複製すること |
- Microsoftが運営するGitリポジトリホスティングサービス
- リモートリポジトリのホスティング以外に、連携できるサービスが多い
- GitHubの個人アカウントにリポジトリを作成する代わりに、組織のアカウントにリポジトリを作成することができる
- 所属メンバーの権限管理、複数人でのリポジトリ管理が容易になる
ここからの説明は、Unix/Linux環境を前提にしています。Windowsの場合は、PowerShellを使用するか読み替えて進めてください。
- リポジトリの作成
mkdir sample-repo cd sample-repo git init
- ファイルの追加
echo "Hello, Git!" > hello.txt
- コミット
git add hello.txt git commit -m "Initial commit"
Tip
コミットメッセージは、変更内容を簡潔に記述するとよいです。 どのように記述するか、チームでルールを決めておく事もあります。
- ブランチの作成
git branch develop git checkout develop
- ファイルの変更
echo "Hello, Git! (develop)" > hello.txt git add hello.txt git commit -m "Update hello.txt"
- 履歴の確認
git log
Tip
お勧めのオプション
git log --graph --name-only
- ブランチのマージ
git checkout master git merge develop
Warning
マージ先のブランチでもコミットが行われている場合、マージ時にコンフリクトが発生することがあります。 コンフリクトが発生した場合は、手動で解消する必要があります。解消方法はこちら
GitHub CLIを使うと、GitHubの操作をコマンドラインで行うことができます。
- GitHub上にリポジトリを作成
gh repo create sample-repo --public
- リポジトリのクローン
gh repo clone sample-repo cd sample-repo
- ファイルの追加
echo "Hello, GitHub!" > hello-github.txt git add hello-github.txt git commit -m "Add hello-github.txt"
- リモートリポジトリへのプッシュ
git push origin main
Important
Gitのデフォルトブランチはmaster
ですが、GitHubのデフォルトブランチはmain
です。
現在はmain
ブランチを使用する事が多いので、ローカルリポジトリを作成する場合にはmain
ブランチを作成することをお勧めします。
何ならGitHub CLIを使ってリポジトリを作成するのがお勧めです。
- ブランチの作成
git branch develop git checkout develop
- ファイルの変更
echo "Hello, GitHub! (develop)" > hello-github.txt git add hello-github.txt git commit -m "Update hello-github.txt"
- プッシュ
git push origin develop
プルリクエストを作成することで、ブランチの変更を取り込むことができます。 また、レビュアーに対して変更内容を共有し、レビューを依頼することができます。
ここから先はGitHubで説明します! よろしくお願いいたします。