GitHub ソースコード用ホスティングサービス
- ソースコード用ホスティングサービス
- 初期設定
- GitHub SSH接続設定 公開鍵認証
- Pull Request
- リモートリポジトリ変更をローカルに反映
- コンフリクト(変更の衝突) 解消
- Issue
- GitHub Actions CI/CD
ソースコード用ホスティングサービス
コードを、インターネット上のサーバに保管初期設定
アカウント作成
鍵の準備
1. 秘密鍵(id_rsa)と公開鍵(id_rsa.pub)のペアを作成
$ ssh-keygen -t rsa -C "GitHub登録メールアドレス"
パスフレーズの入力:GitHubアカウントのパスワードでないもの
※入力しても表示されない
ホームディレクトリ「.ssh」ディレクトリにペア秘密鍵作成
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
リポジトリ利用可能ユーザ(本人以外)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
Pull Request
- ソースコードへの変更をブランチ単位でメンバーに共有できる機能
- コード共有したメンバーからレビューをもらう機能
GitHub
1. Pull Request作成
GitHubにて
「<>Code」タブの上部右「Compare & pull request」クリック
3. 「“Create pull request」クリック
4. Pull Requestコメントを書く
1. Pull Request画面の最下部の入力欄 記述
2. Files Changedタブ 記述
1. コメントしたい行で「+」ボタンをクリック
2. コメント記述
3. 「Start a review」クリック・・・「Pending」状態(公開待ち)
4. 画面上右「Finish your review」クリック後、「Submit review」クリック・・・公開
5. Pull Request マージ
Pull Request画面 上部 「Merge pull request」クリック後、「Confirm merge」クリック
リモートリポジトリ変更をローカルに反映
git pull リモートリポジトリ名 リモートリポジトリのブランチ名
git log
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):「継続的デリバリ」
デプロイ、リリース準備の自動化
デプロイ
環境構築し、アプリを配置、展開・・・アプリが動作できるようにするリリース
クライアントサービス開始更新プログラムを適用すること