Git
gitコマンド
リポジトリの作成
git init # ローカルリポジトリの初期化
git remote add origin {GithubのURL} # リモートリポジトリとの紐付け
git push -u origin main
ブランチの作成と切り替え
git branch # ブランチの一覧を表示
git branch {ブランチ名} # ブランチの作成(現在のブランチから派生)
git branch {新ブランチ名} {派生元ブランチ名} # ブランチの作成(指定したブランチから派生)
git switch {ブランチ名} # ブランチの切り替え
git switch -c {ブランチ名} # ブランチを作成し、切り替え
git switch -c {新ブランチ名} {派生元ブランチ名} # 指定したブランチから派生して、ブランチを作成し、切り替え
ブランチの差分を取る
git diff {ブランチ名A} {ブランチ名B} # ローカルブランチの比較
git diff origin/{ブランチ名A} {ブランチ名B} # リモートブランチとの比較
git diff origin/{ブランチ名A} {ブランチ名B} --shortstat # 更新行数を表示
リモートURLの変更
git remote -v # 現在のリモートURLを確認
git remote set-url origin {新 URL} # リモートURLの変更
patchの作成と適用
git diff > {patchファイル名} # patchの作成
git diff HEAD^~1 > {patchファイル名} # コミットの範囲を指定して差分をとり、patchを作成
patch -p1 < {patchファイル名} # patchの適用
コミットメッセージ
私は、コミットメッセージを以下のように書く。 これは、何を行ったのかがわかりやすければ何でもいい。
フォーマット: <Type(必須)>: <Emoji> #<Issue Number(必須)> <Title(必須)>
例)feat: :sparkles: #123 ログイン機能の実装をする
→ feat: ✨ #123 ログイン機能の実装をする
Type 一覧
- chore: タスクファイルなどプロダクションに影響のない修正
- docs: ドキュメントの更新
- feat: ユーザー向けの機能の追加や変更
- fix: ユーザー向けの不具合の修正
- refactor: リファクタリングを目的とした修正
- style: フォーマットなどのスタイルに関する修正
- test: テストコードの追加や修正
- config: 構成変更
Githubの設定
Features
- Discussion 有効
GitHub上で課題などについて、メンバと議論するための機能
GitHub Discussionsでは、仕様や処理方式などの議論、方針決めを行い、GitHub Issuesでは、方針決定後の作業の管理・分類を行うために使う。
Pull Request
- Allow rebase merging 無効
merge commitではなくrebaseされる
- Always suggest updating pull request branches 有効
Pull Request作成後に、ベースブランチが更新された場合、ソースブランチの更新を提案してくれる
- Automatically delete head branches 有効
Pull Requestをマージすると、ソースブランチを自動的に削除
Pushes
- Limit how many branches and tags can be updated in a single push 有効
複数のブランチが一度のpushでまとめて更新される場合、ブロックする機能
Code Review Limits
- Limit to users explicitly granted read or higher access 有効
Pull Requestの「承認」「変更要求」を明示的に許可したユーザだけが行えるようにする
Github Actions
.github/workflows/{YAMLファイル} に、GitHub Actions で実行するワークフローを定義する。
name: CI
on:
push:
branches:
- main
jobs:
setup:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup
uses: actions/setup-go@v2
with:
go-version: ^1.18
test:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Test
run: cd week2/app && go test
docker-build-push:
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: week2/app/
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/security-minicamp-22-sample-app:${{ github.sha }}