まぬねこの足跡。。。

備忘録+たのしさ+ひっそりと

GitHub ソースコード用ホスティングサービス

ソースコードホスティングサービス

コードを、インターネット上のサーバに保管

初期設定

アカウント作成

1. Github登録

GitHubにて
以下3点を入力、ボタンをクリック
Username:ユーザ名
Email:メールアドレス
Password:パスワード

  • 登録メールアドレスに確認メールが送信されます。

2. 確認メールを開封し、「Verify email address」をクリック

GitHub SSH接続設定 公開鍵認証

ちょこっとメモ

公開鍵認証方式の流れ

1. クライアント(個人PC)側:秘密鍵と公開鍵のペアを作成し、公開鍵をサーバ側に配置
2. クライアント(個人PC):サーバ(GitHub)へアクセスを要求
3. サーバ(GitHub):公開鍵で暗号化した情報をクライアントへ渡す
4. クライアント(個人PC):サーバ(GitHub)からの暗号化した情報を秘密鍵で復号化、サーバ(GitHub)へ返送
5. サーバ(GitHub):情報が一致していることを確認

鍵の準備

1. 秘密鍵(id_rsa)と公開鍵(id_rsa.pub)のペアを作成

$ ssh-keygen -t rsa -C "GitHub登録メールアドレス"

パスフレーズの入力:GitHubアカウントのパスワードでないもの
※入力しても表示されない
ホームディレクトリ「.sshディレクトリにペア秘密鍵作成

2. 公開鍵の登録

$ cat ~/.ssh/id_rsa.pub

表示された文字からssh-rsa ~~GitHub登録メールアドレスまでコピー

3. コピーした公開鍵を、GitHubに設定

GitHubにて
「settings」→「SSH and GPG keys」→「New SSH Key」をクリック

  • Title:自由に記述
  • Key:先ほどコピーした公開鍵をペースト

4. 「Add SSH key」をクリック

5. GitHubへの接続確認

$ ssh -T git@github.com

その後、「Yes」を入力し、ペア鍵を作成したパスワードを入力

確認

以下表示でOK

Hi Username! You've successfully authenticated, but GitHub does not provide shell access.

反映先のリモートリポジトリを設定

1. リモートリポジトリを作成

GitHubにて
1. 「New repository」をクリック
2. 公開設定をきめる
public:公開
private:本人+Collaborators

ちょこっとメモ

Collaborators

リポジトリ利用可能ユーザ(本人以外)

2. リモートリポジトリURLを取得

「<>Code」タブの「Quick setup-~~~」から
ssh」を灰色にクリックし、右端をクリック

3. リモートリポジトリへ変更内容を反映

$ git push リモートリポジトリURL master

↑を簡単にする:リモートリポジトリURLに、名前をつける
リモートリポジトリURL→originと名付ける。
※他のリモートリポジトリURLに変更時も同じ

$ git remote add origin [リモートリポジトリURL]

確認

$ git remote -v
origin git@github.com:アカウント名/for_git_study.git (fetch)
origin git@github.com:アカウント名/for_git_study.git (push)

又は、「.git/config」ファイルで確認

$ cat .git/config

今後は、以下でOK

$ git push origin master
↓解説
$ git push リモートリポジトリ名 ローカルブランチ名:リモートブランチ名

以下で実行すると、以降は「git push」のみで実行可能

$ git push -u origin master

ちょこっとメモ

master→main変更

<条件>

  • 2020年10月1日以降にGitHubリポジトリを作成
  • 初めてのコミット操作をブラウザ上で実施

Pull Request

  • ソースコードへの変更をブランチ単位でメンバーに共有できる機能
  • コード共有したメンバーからレビューをもらう機能

GitHub

1. Pull Request作成

GitHubにて
「<>Code」タブの上部右「Compare & pull request」クリック

2. 以下2点を記入

3. 「“Create pull request」クリック

4. Pull Requestコメントを書く

1. Pull Request画面の最下部の入力欄 記述
2. Files Changedタブ 記述

1. コメントしたい行で「+」ボタンをクリック
2. コメント記述
3. 「Start a review」クリック・・・「Pending」状態(公開待ち)
※「Add Single Comment」クリック・・・即時公開
4. 画面上右「Finish your review」クリック後、「Submit review」クリック・・・公開

5. Pull Request マージ

Pull Request画面 上部 「Merge pull request」クリック後、「Confirm merge」クリック

リモートリポジトリ変更をローカルに反映

git pull リモートリポジトリ名 リモートリポジトリのブランチ名

確認

git log

ちょこっとメモ

git pull = git fetch + git merge

git fetch:

  • ローカルリポジトリ上のリモート追跡ブランチ:更新+リモートリポジトリの変更差分を反映
  • 全リモートブランチを取得

git merge:

  • リモート追跡ブランチを現在ブランチへマージ

リモート追跡ブランチ origin/master

リモートリポジトリの変更をローカルへと取得する為のブランチ

git pull –rebaseコマンド

git fetch + git rebase

$ git pull --rebase origin master

ちょこっとメモ

git pull –rebase = git fetch + git rebase

git fetch:

  • ローカルリポジトリ上のリモート追跡ブランチ:更新+リモートリポジトリの変更差分を反映
  • 全リモートブランチを取得

git rebase:

  • 指定ブランチから現在ブランチが分岐したようにコミットの流れを変更する

コンフリクト(変更の衝突) 解消

マージ時、競合した部分があると競合する変更の両方を対象のファイル記述される。開発者が競合部分のどちらかを残し、他を削除する。そして、再マージする。

コンフリクト発見

1. 下記のようにコンフリクト内容が表示される

$ git merge branchA
Auto-merging コンフリクトファイル名
CONFLICT (content): Merge conflict in コンフリクトファイル名
Automatic merge failed; fix conflicts and then commit the result.

2. コンフリクトファイルを編集

$ cat コンフリクトファイル名
next
<<<<<<< HEAD
and cat
=======
and dog
>>>>>>> branchA

↓編集

$ cat コンフリクトファイル名
front
and cat

3. add、commit、状態確認

$ git add
$ git commit -m "コンフリクト解消"
[master XXXXXXX] resolve a conflict
$ git status
On branch master
nothing to commit, working tree clean
「git status」後、「interactive rebase in progress」が表示されたとき

各指定範囲のコミットに対してコンフリクトを編集し各履歴を繰返し編集。
最後に以下を実行

$ git rebase --continue

ブランチ上の複数コミットをまとめる

※Pull Request前コミット整理用

git merge --squash

Issue

  • 開発中の課題を管理・共有し、スレッド形式で対話する機能
  • Assignees:タスク単位で、メンバーへの担当管理
  • Labels:フィルタリングが可能、自由作成。
  • Projects:タスク管理
  • Milestone:Issueと関連づけると現在の達成度が表示
  • Linked pull request:IssueとPull Requestを関連づける

※Pull Request作成時、
関連づけ:descriptionに”#〇〇(Issue番号)”
close:descriptionに”close #〇〇(Issue番号)”

GitHub Actions CI/CD

GitHub Actions CI/CD用Webサービス

GitHub上のリポジトリをから、自動でアプリケーションのビルドやテスト実行を行う
YAML形式設定ファイルを作成し、利用する処理を記載する

CI(Continuous Integration):「継続的インテグレーション

コード変更毎に検証(テストやビルド確認)し、コードの品質を保つ。

CD(Continuous Delivery):「継続的デリバリ」

デプロイ、リリース準備の自動化

ちょこっとメモ

デプロイ

環境構築し、アプリを配置、展開・・・アプリが動作できるようにする

リリース

クライアントサービス開始
更新プログラムを適用すること