├── .gitignore ├── README.md ├── access-token.md ├── additional.md ├── images ├── access-token-01.png ├── access-token-02.png ├── access-token-03.png ├── access-token-04.png ├── access-token-05.png ├── access-token-06.png ├── access-token-07.png ├── branch.png ├── branch2.png ├── clone.png ├── create_issue1.png ├── create_issue10.png ├── create_issue2.png ├── create_issue3.png ├── create_issue4.png ├── create_issue5.png ├── create_issue6.png ├── create_issue7.png ├── create_issue8.png ├── create_issue9.png ├── create_repo1.png ├── create_repo2.png ├── create_repo3.png ├── create_repo4.png ├── invite_collaborators1.png ├── invite_collaborators2.png ├── invite_collaborators3.png ├── invite_collaborators4.png ├── invite_collaborators5.png ├── invite_collaborators6.png ├── issue.png ├── issue2.png ├── issue3.png ├── new-repo.png ├── new-repo2.png ├── new-repo3.png ├── new-repo4.png ├── pr-a.png ├── pr-a2.png ├── pr-a3.png ├── pr-a4.png ├── pr-b2.png ├── pr-b3.png ├── pr-b4.png ├── pr-b5.png ├── pr-b6.png ├── pr-b7.png ├── pr.png ├── pr2.png ├── pr3.png ├── pr4.png ├── pr5.png ├── pr6.png ├── pr7.png ├── pr8.png ├── pr9.png ├── push.png ├── push2.png ├── ssh-key.png ├── ssh-key2.png └── team_development1.png ├── ssh-keygen.md └── training.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Git-GitHub-Training 2 | 3 | [gist](https://gist.github.com/hironomiu/680fd4ba07414960e9bcaa0cc4ff9a75)で公開していた資料を GitHub に移行 4 | 5 | ## 事前準備 6 | 7 | - [GitHub アカウントの登録](https://github.com/) 8 | - [Git のインストール](https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) 9 | (mac の場合は`brew`でのインストール方法も検討しましょう) 10 | 11 | ## 演習環境 12 | 13 | - シェルコマンドが利用できること 14 | - SSH ターミナル 15 | 16 | ## 演習の流れ 17 | 18 | - [入門編 : training.md](./training.md) 19 | - 基本的な Git&GitHub 操作 20 | - Git&GitHub を用いた「issue -> branch -> add -> commit -> push、pull request -> merge」の開発フロー 21 | - コンフリクトの解消 22 | - [チーム開発ことはじめ : additional.md](additional.md) 23 | - GitHub チームメンバーを開発リポジトリにコラボレータ機能で招待 24 | - Git&GitHub を用いた「issue -> branch -> add -> commit -> push、pull request -> merge」の開発フローをチーム想定で複数人で行う 25 | 26 | ## 演習の進め方 27 | 28 | - [入門編 : training.md](./training.md)を上から順に進めましょう 29 | - [チーム開発ことはじめ : additional.md](additional.md) collaborators などを使ったチーム開発についてはこちらを進めましょう 30 | 31 | ## 発展 32 | 33 | - [GitHub CLI,GitHub Actionsについて](https://github.com/hironomiu/github-cli-and-actions-training) -------------------------------------------------------------------------------- /access-token.md: -------------------------------------------------------------------------------- 1 | # 個人アクセストークンを利用し HTTPS 経由の GitHub の利用 2 | 3 | `Settings`を押下 4 | ![access-token-01](./images/access-token-01.png) 5 | 6 | `Developer settings`を押下 7 | ![access-token-02](./images/access-token-02.png) 8 | 9 | `Personal access tokens`タブを押下、`Generate new token`を押下 10 | ![access-token-03](./images/access-token-03.png) 11 | 12 | パスワードを入力し`Confirm password`を押下 13 | ![access-token-04](./images/access-token-04.png) 14 | 15 | `Note`適時入力、`Expiration`有効期間を設定、`repo`今回はリポジトリを扱えるようにチェックを入れる 16 | ![access-token-05](./images/access-token-05.png) 17 | 18 | `Generate token`を押下 19 | ![access-token-06](./images/access-token-06.png) 20 | 21 | アクセストークンをコピーし保存する(以降は見えなくなる  が再生成は可能) 22 | ![access-token-07](./images/access-token-07.png) 23 | -------------------------------------------------------------------------------- /additional.md: -------------------------------------------------------------------------------- 1 | # チーム開発 GitHub ことはじめ 2 | 3 | ## 準備 4 | 5 | ### ローカルで作業用ディレクトリの作成 6 | 7 | 任意のディレクトリで今回のリポジトリ用のディレクトリを「日付(YYYYMMDD)\_github」で作成 8 | 9 | ``` 10 | $ mkdir XXXXXXXX_github 11 | $ cd XXXXXXXX_github 12 | ``` 13 | 14 | 作成したディレクトリに遷移していること 15 | 16 | ``` 17 | $ pwd 18 | XXXXX/XXXXXXXX_github 19 | ``` 20 | 21 | ### git init 22 | 23 | ローカルで git の初期化 24 | 25 | ``` 26 | $ git init 27 | Initialized empty Git repository in XXXXX/XXXXXXXX_github/.git/ 28 | ``` 29 | 30 | ### README.md の作成 31 | 32 | README.md の作成(touch で作成しているが普段利用しているエディタでも良い) 33 | 34 | ``` 35 | $ touch README.md 36 | ``` 37 | 38 | 確認 39 | 40 | ``` 41 | $ ls 42 | README.md 43 | ``` 44 | 45 | ### add & commit 46 | 47 | 確認 48 | 49 | ``` 50 | $ git status 51 | On branch main 52 | 53 | No commits yet 54 | 55 | Untracked files: 56 | (use "git add ..." to include in what will be committed) 57 | README.md 58 | 59 | nothing added to commit but untracked files present (use "git add" to track) 60 | ``` 61 | 62 | add 63 | 64 | ``` 65 | $ git add README.md 66 | ``` 67 | 68 | commit 69 | 70 | ``` 71 | $ git commit -m "first" 72 | ``` 73 | 74 | 確認 75 | 76 | ``` 77 | $ git status 78 | On branch main 79 | nothing to commit, working tree clean 80 | ``` 81 | 82 | ### GitHub リポジトリの作成 83 | 84 | 右上プルダウン「New repository」もしくは左上緑色アイコンを押下 85 | 86 | ![create_repo1](./images/create_repo1.png) 87 | 88 | Repository name「日付(YYYYMMDD)\_github」、その他特に選択せず(Public を選択、「Initialize this repository with:」は何もチェックせず)、「Create repository」を押下 89 | 90 | ![create_repo2](./images/create_repo2.png) 91 | 92 | 利用プロトコルは「SSH」を選択、「…or push an existing repository from the command line」内のコマンドをクリップボードにコピー 93 | 94 | ![create_repo3](./images/create_repo3.png) 95 | 96 | ### リモートリポジトリの登録&push 97 | 98 | ターミナルにペースト 99 | 100 | ``` 101 | $ git remote add origin git@github.com:hironomiu/XXXXXXXX_github.git 102 | $ git branch -M main 103 | $ git push -u origin main 104 | Warning: Permanently added 'github.com,52.69.186.44' (RSA) to the list of known hosts. 105 | Enumerating objects: 3, done. 106 | Counting objects: 100% (3/3), done. 107 | Writing objects: 100% (3/3), 204 bytes | 204.00 KiB/s, done. 108 | Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 109 | To github.com:hironomiu/XXXXXXXX_github.git 110 | * [new branch] main -> main 111 | Branch 'main' set up to track remote branch 'main' from 'origin'. 112 | ``` 113 | 114 | ### リロード 115 | 116 | GitHub リポジトリをリロードし push が成功していることを確認 117 | 118 | ![create_repo4](./images/create_repo4.png) 119 | 120 | ## チームメンバー招待 121 | 122 | 準備で作成したリポジトリにチームメンバーを「コラボレータ」機能を用いて招待する 123 | 124 | ### collaborators に招待 125 | 126 | 「settings」タブを選択 127 | 128 | ![invite_collaborators1](./images/invite_collaborators1.png) 129 | 130 | 「Manage access」タブを選択 131 | 132 | ![invite_collaborators2](./images/invite_collaborators2.png) 133 | 134 | GitHub アカウントのパスワードを入力し押下 135 | 136 | ![invite_collaborators3](./images/invite_collaborators3.png) 137 | 138 | 「invite a collaborator」を押下、招待するチームメンバーの GitHub アカウントを入力、下部にサジェストされる GitHub アカウントでチームメンバーのアカウントを選択(青くなる)し押下 139 | 140 | ![invite_collaborators4](./images/invite_collaborators4.png) 141 | 142 | 「Add XXXXX this repository」を押下 143 | 144 | ![invite_collaborators5](./images/invite_collaborators5.png) 145 | 146 | 招待されたチームメンバーにメールが届き、JOIN すると「Pending invite」のステータスが招待済のステータスに変わります 147 | 148 | ![invite_collaborators5](./images/invite_collaborators5.png) 149 | 150 | ## チームメンバーとしてオペレーション 151 | 152 | ### チームリポジトリにアクセス 153 | 154 | collaborators に招待された GitHub リポジトリにアクセスし「code」を押下、「SSH」を選択しクリップボードにコピー 155 | 156 | ![team_development1](./images/team_development1.png) 157 | 158 | ### clone 159 | 160 | 任意のディレクトリ(これまでオペレーションしたディレクトリとは別で他のディレクトリ)でクリップボードにコピーした git repo の git clone を行う 161 | 162 | ``` 163 | $ git clone git@github.com:XXXXX/XXXXXXXX_github.git 164 | ``` 165 | 166 | ディレクトリ遷移 167 | 168 | ``` 169 | $ cd XXXXXXXX_github 170 | $ pwd 171 | xxxxx/XXXXXXXX_github 172 | ``` 173 | 174 | ## チーム開発想定のオペレーション 175 | 176 | チームでするべき issue を作成し、それを各メンバーが行うことでチーム開発的なオペレーションのトレーニングを行います 177 | 178 | ### GitHub issue の作成 179 | 180 | 「issues」タブを選択、「New Issue「New issue」を押下 181 | 182 | ![create_issue1](./images/create_issue1.png) 183 | 184 | タイトル「<メンバー名>.md の作成」の記載(<>内は各自の GitHub アカウント名)、Write「 <メンバー名>.md の作成`hoge`の記載する」を記載し「Submit new issue」を押下 185 | 186 | ![create_issue2](./images/create_issue2.png) 187 | 188 | 作成した issue のパーマリンクを覚えておくこと(issue に限らず GitHub ではパーマリンクが作成される) 189 | 190 | ![create_issue3](./images/create_issue3.png) 191 | 192 | ### ローカルで開発 193 | 194 | 現在の branch を確認 195 | 196 | ``` 197 | $ git branch 198 | * main 199 | ``` 200 | 201 | issue に紐づく branch を作成(xxxx は各自の GitHub アカウント名)し遷移 202 | 203 | ``` 204 | $ git branch create_xxxx_markdownfile 205 | $ git switch create_hironomiu_markdownfile 206 | Switched to branch 'create_hironomiu_markdownfile' 207 | ``` 208 | 209 | 確認 210 | 211 | ``` 212 | $ git branch 213 | * create_hironomiu_markdownfile 214 | main 215 | ``` 216 | 217 | ### 開発想定の作業 218 | 219 | <メンバー名>.md を作成し`hoge`を記載しセーブ 220 | 221 | xxxx は各自の GitHub アカウント名 222 | 223 | ``` 224 | $ vi xxxx.md 225 | $ cat xxxx.md 226 | hoge 227 | ``` 228 | 229 | add & commit。commit メッセージに`fixed #1`を記載すること 230 | 231 | ``` 232 | $ git add . 233 | $ git commit -m "create markdown file fixed #1" 234 | [create_hironomiu_markdownfile 5a9a7dc] create markdown file fixd #1 235 | 1 file changed, 1 insertion(+) 236 | create mode 100644 xxxx.md 237 | ``` 238 | 239 | push 240 | 241 | ``` 242 | $ git push origin create_hironomiu_markdownfile 243 | Warning: Permanently added 'github.com,52.192.72.89' (RSA) to the list of known hosts. 244 | Enumerating objects: 4, done. 245 | Counting objects: 100% (4/4), done. 246 | Delta compression using up to 4 threads 247 | Compressing objects: 100% (2/2), done. 248 | Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done. 249 | Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 250 | remote: 251 | remote: Create a pull request for 'create_hironomiu_markdownfile' on GitHub by visiting: 252 | remote: https://github.com/hironomiu/XXXXXXXX_github/pull/new/create_hironomiu_markdownfile 253 | remote: 254 | To github.com:hironomiu/XXXXXXXX_github.git 255 | * [new branch] create_hironomiu_markdownfile -> create_hironomiu_markdownfile 256 | ``` 257 | 258 | 「Pull requests」タブの選択、「New pull request」を押下 259 | 260 | ![create_issue4](./images/create_issue4.png) 261 | 262 | 「compare」に今回 push した branch を選択、「Create pull request」を押下 263 | 264 | ![create_issue5](./images/create_issue5.png) 265 | 266 | Write にメッセージがあれば記載(本来は LGTM は取り込み時に入れるメッセージ)、「Create pull request」を押下 267 | 268 | ![create_issue6](./images/create_issue6.png) 269 | 270 | 「Merge pull request」を押下(本来は PR の内容をレビューした後に行う) 271 | 272 | ![create_issue7](./images/create_issue7.png) 273 | 274 | 「Confirm merge」を押下 275 | 276 | ![create_issue8](./images/create_issue8.png) 277 | 278 | 「Delete branch」を押下(チームによっては消さない運用を選択する場合もあるが今回は削除する) 279 | 280 | ![create_issue9](./images/create_issue9.png) 281 | 282 | `main`に取り込まれていることをブラウザで確認 283 | 284 | ![create_issue10](./images/create_issue10.png) 285 | 286 | ## ローカルに取り込み 287 | 288 | チームメンバー(今回は自身のも)が開発し main に取り込まれた内容をローカルの main に取り込む 289 | 290 | switch 291 | 292 | ``` 293 | $ git switch main 294 | Switched to branch 'main' 295 | Your branch is up to date with 'origin/main'. 296 | ``` 297 | 298 | fetch 299 | 300 | ``` 301 | $ git fetch origin main 302 | Warning: Permanently added 'github.com,52.69.186.44' (RSA) to the list of known hosts. 303 | remote: Enumerating objects: 1, done. 304 | remote: Counting objects: 100% (1/1), done. 305 | remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 306 | Unpacking objects: 100% (1/1), 630 bytes | 315.00 KiB/s, done. 307 | From github.com:hironomiu/XXXXXXXX_github 308 | * branch main -> FETCH_HEAD 309 | 562e5d2..2d5efe9 main -> origin/main 310 | ``` 311 | 312 | merge 313 | 314 | ``` 315 | $ git merge FETCH_HEAD 316 | Updating 562e5d2..2d5efe9 317 | Fast-forward 318 | hironomiu.md | 1 + 319 | 1 file changed, 1 insertion(+) 320 | create mode 100644 hironomiu.md 321 | ``` 322 | 323 | ファイルの確認 324 | 325 | ``` 326 | $ ll 327 | total 8 328 | drwxr-xr-x 5 miurahironori staff 160 1 19 13:02 . 329 | drwxr-xr-x 3 miurahironori staff 96 1 19 11:56 .. 330 | drwxr-xr-x 15 miurahironori staff 480 1 19 13:02 .git 331 | -rw-r--r-- 1 miurahironori staff 0 1 19 11:56 README.md 332 | -rw-r--r-- 1 miurahironori staff 5 1 19 13:02 hironomiu.md 333 | ``` 334 | -------------------------------------------------------------------------------- /images/access-token-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/access-token-01.png -------------------------------------------------------------------------------- /images/access-token-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/access-token-02.png -------------------------------------------------------------------------------- /images/access-token-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/access-token-03.png -------------------------------------------------------------------------------- /images/access-token-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/access-token-04.png -------------------------------------------------------------------------------- /images/access-token-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/access-token-05.png -------------------------------------------------------------------------------- /images/access-token-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/access-token-06.png -------------------------------------------------------------------------------- /images/access-token-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/access-token-07.png -------------------------------------------------------------------------------- /images/branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/branch.png -------------------------------------------------------------------------------- /images/branch2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/branch2.png -------------------------------------------------------------------------------- /images/clone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/clone.png -------------------------------------------------------------------------------- /images/create_issue1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue1.png -------------------------------------------------------------------------------- /images/create_issue10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue10.png -------------------------------------------------------------------------------- /images/create_issue2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue2.png -------------------------------------------------------------------------------- /images/create_issue3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue3.png -------------------------------------------------------------------------------- /images/create_issue4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue4.png -------------------------------------------------------------------------------- /images/create_issue5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue5.png -------------------------------------------------------------------------------- /images/create_issue6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue6.png -------------------------------------------------------------------------------- /images/create_issue7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue7.png -------------------------------------------------------------------------------- /images/create_issue8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue8.png -------------------------------------------------------------------------------- /images/create_issue9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_issue9.png -------------------------------------------------------------------------------- /images/create_repo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_repo1.png -------------------------------------------------------------------------------- /images/create_repo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_repo2.png -------------------------------------------------------------------------------- /images/create_repo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_repo3.png -------------------------------------------------------------------------------- /images/create_repo4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/create_repo4.png -------------------------------------------------------------------------------- /images/invite_collaborators1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/invite_collaborators1.png -------------------------------------------------------------------------------- /images/invite_collaborators2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/invite_collaborators2.png -------------------------------------------------------------------------------- /images/invite_collaborators3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/invite_collaborators3.png -------------------------------------------------------------------------------- /images/invite_collaborators4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/invite_collaborators4.png -------------------------------------------------------------------------------- /images/invite_collaborators5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/invite_collaborators5.png -------------------------------------------------------------------------------- /images/invite_collaborators6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/invite_collaborators6.png -------------------------------------------------------------------------------- /images/issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/issue.png -------------------------------------------------------------------------------- /images/issue2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/issue2.png -------------------------------------------------------------------------------- /images/issue3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/issue3.png -------------------------------------------------------------------------------- /images/new-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/new-repo.png -------------------------------------------------------------------------------- /images/new-repo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/new-repo2.png -------------------------------------------------------------------------------- /images/new-repo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/new-repo3.png -------------------------------------------------------------------------------- /images/new-repo4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/new-repo4.png -------------------------------------------------------------------------------- /images/pr-a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-a.png -------------------------------------------------------------------------------- /images/pr-a2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-a2.png -------------------------------------------------------------------------------- /images/pr-a3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-a3.png -------------------------------------------------------------------------------- /images/pr-a4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-a4.png -------------------------------------------------------------------------------- /images/pr-b2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-b2.png -------------------------------------------------------------------------------- /images/pr-b3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-b3.png -------------------------------------------------------------------------------- /images/pr-b4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-b4.png -------------------------------------------------------------------------------- /images/pr-b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-b5.png -------------------------------------------------------------------------------- /images/pr-b6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-b6.png -------------------------------------------------------------------------------- /images/pr-b7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr-b7.png -------------------------------------------------------------------------------- /images/pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr.png -------------------------------------------------------------------------------- /images/pr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr2.png -------------------------------------------------------------------------------- /images/pr3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr3.png -------------------------------------------------------------------------------- /images/pr4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr4.png -------------------------------------------------------------------------------- /images/pr5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr5.png -------------------------------------------------------------------------------- /images/pr6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr6.png -------------------------------------------------------------------------------- /images/pr7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr7.png -------------------------------------------------------------------------------- /images/pr8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr8.png -------------------------------------------------------------------------------- /images/pr9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/pr9.png -------------------------------------------------------------------------------- /images/push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/push.png -------------------------------------------------------------------------------- /images/push2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/push2.png -------------------------------------------------------------------------------- /images/ssh-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/ssh-key.png -------------------------------------------------------------------------------- /images/ssh-key2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/ssh-key2.png -------------------------------------------------------------------------------- /images/team_development1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hironomiu/Git-GitHub-Training/c7eb156031d83f699a8bb7d5e46685cc6ef80f61/images/team_development1.png -------------------------------------------------------------------------------- /ssh-keygen.md: -------------------------------------------------------------------------------- 1 | # GitHub に公開鍵の登録 2 | 3 | GitHub は SSH と HTTPS の 2 つのプロトコルが利用できます。SSH を利用する場合は公開鍵秘密鍵を作成し GitHub に対応する公開鍵を登録する必要があります 4 | 5 | 鍵が作成できない or 扱えない人は行わなくて OK です(**その場合は以降 SSH の箇所は HTTPS で読み替えてください**) 6 | 7 | ## 鍵の作成 8 | 9 | メールアドレスは GitHub に登録しているメールアドレスを設定しましょう。パスフレーズは設定しましょう 10 | 11 | **ファイル名(省略した場合は id_rsa)について作成したファイルは一般的には`~/.ssh`に`600`で配置します。ファイル名が衝突する場合は適時命名してください** 12 | 13 | ``` 14 | $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 15 | Generating public/private rsa key pair. 16 | Enter file in which to save the key (/Users/miurahironori/.ssh/id_rsa): ファイル名(省略した場合はid_rsa) 17 | Enter passphrase (empty for no passphrase): パスフレーズ 18 | Enter same passphrase again: パスフレーズ 19 | Your identification has been saved in hoge. 20 | Your public key has been saved in hoge.pub. 21 | The key fingerprint is: 22 | SHA256: hironomiu@gmail.com 23 | The key's randomart image is: 24 | +---[RSA 4096]----+ 25 | 26 | +----[SHA256]-----+ 27 | ``` 28 | 29 | ## 公開鍵のコピー 30 | 31 | クリップボードに公開鍵をコピーしましょう 32 | 33 | ``` 34 | $ cat id_rsa.pub 35 | ``` 36 | 37 | ## 鍵の登録 38 | 39 | 右上から settings -> SSH and GPG keys -> New SSH key 押下 40 | 41 | ![ssh-key](./images/ssh-key.png) 42 | 43 | Title 記入 -> Key(作成した id_rsa.pub の内容をコピペ) -> Add SSH key 押下 44 | 45 | ![ssh-key2](./images/ssh-key2.png) 46 | 47 | ## 確認 48 | 49 | ssh コマンドで`git`ユーザで`github.com`に対して接続確認を行う 50 | 51 | ``` 52 | $ ssh git@github.com 53 | Enter passphrase for key ; 54 | PTY allocation request failed on channel 0 55 | Hi hironomiu! You've successfully authenticated, but GitHub does not provide shell access. 56 | Connection to github.com closed. 57 | ``` 58 | -------------------------------------------------------------------------------- /training.md: -------------------------------------------------------------------------------- 1 | # Git-GitHub-Training 2 | 3 | ここでは以下をハンズオン形式で行います 4 | 5 | - 基本的な Git&GitHub 操作 6 | - Git&GitHub を用いた「issue -> branch -> add -> commit -> push、pull request -> merge」の開発フロー 7 | - コンフリクトの解消 8 | 9 | ## Git 10 | 11 | 基本的な git 操作(add,commit,etc)を行います 12 | 13 | ### 準備 14 | 15 | #### ディレクトリ作成と遷移 16 | 17 | これから本演習を行うため任意のディレクトリでワークツリー用のディレクトリを作製し遷移しましょう 18 | 19 | ``` 20 | $ mkdir git-practice 21 | $ cd git-practice/ 22 | ``` 23 | 24 | #### Author の確認 25 | 26 | 今回は global で設定します(プロジェクト毎に設定したい場合は local で設定しましょう)初めての場合は以下のエラーがでます。 27 | 28 | ``` 29 | $ git config --global --list 30 | fatal: unable to read config file ‘/Users/h-miura/.gitconfig’: No such file or directory 31 | ``` 32 | 33 | 設定(自身の user.name、user.email に置き換えましょう) 34 | 35 | ``` 36 | $ git config --global user.name hironomiu 37 | $ git config --global user.email hironomiu@gmail.com 38 | $ git config --global --list 39 | user.name=hironomiu 40 | user.email=hironomiu@gmail.com 41 | ``` 42 | 43 | #### デフォルトブランチの設定 44 | 45 | デフォルトブランチを`main`で設定しましょう 46 | 47 | ``` 48 | $ git config --global init.defaultBranch main 49 | ``` 50 | 51 | **参考**:次の`git init`で`main`の設定を行っていない場合以下のメッセージが出力されます 52 | 53 | ``` 54 | $ git init 55 | hint: Using 'master' as the name for the initial branch. This default branch name 56 | hint: is subject to change. To configure the initial branch name to use in all 57 | hint: of your new repositories, which will suppress this warning, call: 58 | hint: 59 | hint: git config --global init.defaultBranch 60 | hint: 61 | hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and 62 | hint: 'development'. The just-created branch can be renamed via this command: 63 | hint: 64 | hint: git branch -m 65 | ``` 66 | 67 | ### Git 操作 68 | 69 | #### init 70 | 71 | init(初期化)によるローカルリポジトリの作製(ワークツリーの作製) 72 | 73 | ``` 74 | $ git init 75 | Initialized empty Git repository in /xxxx/git-practice/.git/ 76 | ``` 77 | 78 | branch の確認(何も表示されない。バージョンによっては`* master`が表示されることがある) 79 | 80 | ``` 81 | $ git branch 82 | ``` 83 | 84 | #### .gitignore 85 | 86 | トラッキングの対象外の設定(`.gitignore`の作成) 87 | 88 | ``` 89 | $ touch .gitignore 90 | $ ls .gitignore 91 | .gitignore 92 | ``` 93 | 94 | gibo を用いたトラッキングの対象外の設定(`.gitignore`の作成)。Mac の場合`brew install gibo`でインストールでできる 95 | 96 | ``` 97 | $ gibo dump macOS >> .gitignore 98 | ``` 99 | 100 | [gitignore.io](https://www.toptal.com/developers/gitignore)を使った`.gitignore`の設定方法もあります 101 | 102 | #### オペレーション 103 | 104 | ここらからは開発想定として Markdown ファイルを作成編集し、それを git 管理(add,commi)していきます 105 | 106 | ワークツリーで README.md ファイルの作成と編集 107 | 108 | ``` 109 | $ vi README.md 110 | $ cat README.md 111 | # git-practice 112 | ``` 113 | 114 | ステータス確認 115 | ` .gitignore``README.md `がインデックス対象となっていること 116 | 117 | ``` 118 | $ git status 119 | On branch main 120 | 121 | No commits yet 122 | 123 | Untracked files: 124 | (use "git add ..." to include in what will be committed) 125 | .gitignore 126 | README.md 127 | 128 | nothing added to commit but untracked files present (use "git add" to track) 129 | ``` 130 | 131 | add(インデックスに登録) 132 | 133 | ``` 134 | $ git add README.md 135 | $ git add .gitignore 136 | ``` 137 | 138 | ステータス確認 139 | ` .gitignore``README.md `がコミット対象となっていること 140 | 141 | ``` 142 | $ git status 143 | On branch main 144 | 145 | No commits yet 146 | 147 | Changes to be committed: 148 | (use "git rm --cached ..." to unstage) 149 | new file: .gitignore 150 | new file: README.md 151 | ``` 152 | 153 | コミット(commit)でローカルリポジトリに記録。`-m`でコミットメッセージを記載しましょう 154 | 155 | ``` 156 | $ git commit -m "created .gitignore README.md" 157 | [main (root-commit) fc9aa86] created .gitignore README.md 158 | 2 files changed, 31 insertions(+) 159 | create mode 100644 .gitignore 160 | create mode 100644 README.md 161 | ``` 162 | 163 | ブランチの確認 164 | 165 | ``` 166 | $ git branch 167 | * main 168 | ``` 169 | 170 | ステータス確認 171 | 172 | ``` 173 | $ git status 174 | On branch main 175 | nothing to commit, working tree clean 176 | ``` 177 | 178 | ログの確認 179 | 180 | ``` 181 | $ git log 182 | commit fc9aa867672f8bf471269849487933d15e92c81b (HEAD -> main) 183 | Author: hironomiu 184 | Date: Wed Nov 25 14:31:24 2020 +0900 185 | 186 | created .gitignore README.md 187 | ``` 188 | 189 | Author,Commiter を確認 190 | 191 | ``` 192 | $ git log --pretty=fuller 193 | commit fc9aa867672f8bf471269849487933d15e92c81b (HEAD -> main) 194 | Author: hironomiu 195 | AuthorDate: Wed Nov 25 14:31:24 2020 +0900 196 | Commit: hironomiu 197 | CommitDate: Wed Nov 25 14:31:24 2020 +0900 198 | 199 | created .gitignore README.md 200 | ``` 201 | 202 | #### オペレーション 203 | 204 | ここでは開発想定で README.md を編集し、それをインデックスを行う前で作業内容の取り消しを行います 205 | 206 | README.md の末行に`hogefugapiyo`の追記 207 | 208 | ``` 209 | $ vi README.md 210 | $ cat README.md 211 | # git-practice 212 | hogefugapiyo 213 | ``` 214 | 215 | `git diff`で追記した`README.md`との差分を確認する 216 | 217 | ``` 218 | $ git diff README.md 219 | diff --git a/README.md b/README.md 220 | index 3e4b5a2..4d69739 100644 221 | --- a/README.md 222 | +++ b/README.md 223 | @@ -1 +1,2 @@ 224 | # git-practice 225 | +hogefugapiyo 226 | ``` 227 | 228 | ステータスの確認 229 | 230 | ``` 231 | $ git status 232 | On branch main 233 | Changes not staged for commit: 234 | (use "git add ..." to update what will be committed) 235 | (use "git restore ..." to discard changes in working directory) 236 | modified: README.md 237 | 238 | no changes added to commit (use "git add" and/or "git commit -a") 239 | ``` 240 | 241 | ワーキングディレクトリ内の変更の取り消し(インデックス前の取り消し) 242 | 243 | ``` 244 | $ git restore README.md 245 | ``` 246 | 247 | 追記した内容以前に戻っていること 248 | 249 | ``` 250 | $ cat README.md 251 | # git-practice 252 | ``` 253 | 254 | ステータス確認 255 | 256 | ``` 257 | $ git status 258 | On branch main 259 | nothing to commit, working tree clean 260 | ``` 261 | 262 | #### オペレーション 263 | 264 | ここでは開発想定で README.md を編集し、それをインデックス後(add)作業内容を**インデックス前**の状態に戻します 265 | 266 | README.md の末行に`piyofugahoge`の追記 267 | 268 | ``` 269 | $ vi README.md 270 | $ cat README.md 271 | # git-practice 272 | piyofugahoge 273 | ``` 274 | 275 | ステータス確認 276 | 277 | ``` 278 | $ git status 279 | On branch main 280 | Changes not staged for commit: 281 | (use "git add ..." to update what will be committed) 282 | (use "git restore ..." to discard changes in working directory) 283 | modified: README.md 284 | 285 | no changes added to commit (use "git add" and/or "git commit -a") 286 | ``` 287 | 288 | `git diff`で追記した`README.md`との差分を確認する 289 | 290 | ``` 291 | $ git diff README.md 292 | diff --git a/README.md b/README.md 293 | index 3e4b5a2..2565824 100644 294 | --- a/README.md 295 | +++ b/README.md 296 | @@ -1 +1,2 @@ 297 | # git-practice 298 | +piyofugahoge 299 | ``` 300 | 301 | add でインデックスに登録する(`git add .`の`.`はカレントディレクトリ全てを指定する意味) 302 | 303 | ``` 304 | $ git add . 305 | ``` 306 | 307 | ステータス確認 308 | 309 | ``` 310 | $ git status 311 | On branch main 312 | Changes to be committed: 313 | (use "git restore --staged ..." to unstage) 314 | modified: README.md 315 | ``` 316 | 317 | 差分の確認(何も返らない) 318 | 319 | ``` 320 | $ git diff README.md 321 | ``` 322 | 323 | インデックスの登録を取り消す 324 | 325 | ``` 326 | $ git restore --staged README.md 327 | ``` 328 | 329 | ステータス確認 330 | 331 | ``` 332 | $ git status 333 | On branch main 334 | Changes not staged for commit: 335 | (use "git add ..." to update what will be committed) 336 | (use "git restore ..." to discard changes in working directory) 337 | modified: README.md 338 | 339 | no changes added to commit (use "git add" and/or "git commit -a") 340 | ``` 341 | 342 | 差分の確認。README.md の末行に`piyofugahoge`の追記が存在すること 343 | 344 | ``` 345 | $ git diff README.md 346 | diff --git a/README.md b/README.md 347 | index 3e4b5a2..2565824 100644 348 | --- a/README.md 349 | +++ b/README.md 350 | @@ -1 +1,2 @@ 351 | # git-practice 352 | +piyofugahoge 353 | ``` 354 | 355 | ファイル確認(変更内容は残っている) 356 | 357 | ``` 358 | $ cat README.md 359 | # git-practice 360 | piyofugahoge 361 | ``` 362 | 363 | #### オペレーション 364 | 365 | ここでは開発想定で README.md を編集し、それを commit 後、最新の commit ログを**ワーキングディレクトリの内容も取り消した**状態に戻します 366 | 367 | add(インデックス登録) 368 | 369 | ``` 370 | $ git add . 371 | ``` 372 | 373 | ステータス確認 374 | 375 | ``` 376 | $ git status 377 | On branch main 378 | Changes to be committed: 379 | (use "git restore --staged ..." to unstage) 380 | modified: README.md 381 | ``` 382 | 383 | コミット(commit)でローカルリポジトリに記録 384 | 385 | ``` 386 | $ git commit -m "modify README.md" 387 | [main b85751a] modify README.md 388 | 1 file changed, 1 insertion(+) 389 | ``` 390 | 391 | ステータス確認(`add commit`の対象が存在しないこと) 392 | 393 | ``` 394 | $ git status 395 | On branch main 396 | nothing to commit, working tree clean 397 | ``` 398 | 399 | これまでのコミットログの確認(ログは下から上で時系列に並ぶ) 400 | 401 | ``` 402 | $ git log 403 | commit b85751a3f95a9abd5815174cd5b78aaf2c8cc487 (HEAD -> main) 404 | Author: hironomiu 405 | Date: Wed Nov 25 14:49:47 2020 +0900 406 | 407 | modify README.md 408 | 409 | commit fc9aa867672f8bf471269849487933d15e92c81b 410 | Author: hironomiu 411 | Date: Wed Nov 25 14:31:24 2020 +0900 412 | 413 | created .gitignore README.md 414 | ``` 415 | 416 | 現在の README.md の内容を確認 417 | 418 | ``` 419 | $ cat README.md 420 | # git-practice 421 | piyofugahoge 422 | ``` 423 | 424 | commit の取り消し(ワーキングディレクトリの内容も取り消し) 425 | 426 | ``` 427 | $ git reset --hard HEAD^ 428 | HEAD is now at fc9aa86 created .gitignore README.md 429 | ``` 430 | 431 | 現在の README.md の内容を確認 432 | 433 | ``` 434 | $ cat README.md 435 | # git-practice 436 | ``` 437 | 438 | コミットログから`modify README.md`のコミットログが取り消されていることを確認する(最新のコミットの取り消し) 439 | 440 | ``` 441 | $ git log 442 | commit fc9aa867672f8bf471269849487933d15e92c81b (HEAD -> main) 443 | Author: hironomiu 444 | Date: Wed Nov 25 14:31:24 2020 +0900 445 | 446 | created .gitignore README.md 447 | ``` 448 | 449 | #### オペレーション 450 | 451 | ここでは開発想定で README.md を編集し、それを commit 後、最新の commit ログを**取り消し(インデックスに戻す)更に取り消し(ワークツリーに戻す)更に取り消し(ワークツリーの内容を取り消した)**状態に戻します 452 | 453 | README.md の末行に`piyofugahoge`の追記 454 | 455 | ``` 456 | $ vi README.md 457 | $ cat README.md 458 | # git-practice 459 | piyofugahoge 460 | ``` 461 | 462 | add(インデックス登録) 463 | 464 | ``` 465 | $ git add . 466 | ``` 467 | 468 | commit(ローカルリポジトリに記録) 469 | 470 | ``` 471 | $ git commit -m "modify README.md" 472 | [main cedfb1d] modify README.md 473 | 1 file changed, 1 insertion(+) 474 | ``` 475 | 476 | コミットログから`modify README.md`が追加されていることの確認 477 | 478 | ``` 479 | $ git log 480 | commit cedfb1d94834035a034682d6514f797d2a57ebd4 (HEAD -> main) 481 | Author: hironomiu 482 | Date: Wed Nov 25 15:33:53 2020 +0900 483 | 484 | modify README.md 485 | 486 | commit fc9aa867672f8bf471269849487933d15e92c81b 487 | Author: hironomiu 488 | Date: Wed Nov 25 14:31:24 2020 +0900 489 | 490 | created .gitignore README.md 491 | ``` 492 | 493 | commit の取り消し(インデックスに戻す) 494 | 495 | ``` 496 | $ git reset --soft HEAD^ 497 | ``` 498 | 499 | ステータスからコミット(`commit`)対象に`README.md`が存在することを確認 500 | 501 | ``` 502 | $ git status 503 | On branch main 504 | Changes to be committed: 505 | (use "git restore --staged ..." to unstage) 506 | modified: README.md 507 | ``` 508 | 509 | ファイル確認(変更内容は残っている) 510 | 511 | ``` 512 | $ cat README.md 513 | # git-practice 514 | piyofugahoge 515 | ``` 516 | 517 | インデックスの取り消し 518 | 519 | ``` 520 | $ git restore --staged README.md 521 | ``` 522 | 523 | ファイルの確認 524 | 525 | ``` 526 | $ cat README.md 527 | # git-practice 528 | piyofugahoge 529 | ``` 530 | 531 | ステータスからインデックス(`add`)対象に`README.md`が存在することを確認 532 | 533 | ``` 534 | $ git status 535 | On branch main 536 | Changes not staged for commit: 537 | (use "git add ..." to update what will be committed) 538 | (use "git restore ..." to discard changes in working directory) 539 | modified: README.md 540 | 541 | no changes added to commit (use "git add" and/or "git commit -a") 542 | ``` 543 | 544 | README.md のワークツリー上の変更`piyofugahoge`の取り消し 545 | 546 | ``` 547 | $ git restore README.md 548 | ``` 549 | 550 | ステータス確認 551 | 552 | ``` 553 | $ git status 554 | On branch main 555 | nothing to commit, working tree clean 556 | ``` 557 | 558 | ファイル確認し末行に`piyofugahoge`が存在しないこと 559 | 560 | ``` 561 | $ cat README.md 562 | # git-practice 563 | ``` 564 | 565 | ### Git おさらい 566 | 567 | インデックス 568 | 569 | ``` 570 | $ git add XX 571 | ``` 572 | 573 | コミット(`-m`でコミットメッセージを記載する) 574 | 575 | ``` 576 | $ git commmit -m "XXX" 577 | ``` 578 | 579 | 差分の確認(様々な差分の確認方法があるので調べてみましょう) 580 | 581 | ``` 582 | $ git diff XX 583 | ``` 584 | 585 | 状態の確認 586 | 587 | ``` 588 | $ git status 589 | ``` 590 | 591 | コミットログの確認 592 | 593 | ``` 594 | $ git log 595 | ``` 596 | 597 | ## GitHub 598 | 599 | GitHub は SSH と HTTPS の 2 つのプロトコルが利用できます。SSH を利用する場合は[ssh-keygen](./ssh-keygen.md)を参考にすること 600 | 601 | HTTPS を利用する場合は[access-token](./access-token.md)を参考にすること 602 | 603 | ### リポジトリの作成 604 | 605 | ここまで Git の演習でローカルで作ったリポジトリをこれからの GitHub の演習用の pusu する先として`git-practice`を作成しましょう 606 | 607 | ![new-repo](./images/new-repo.png) 608 | 609 | `Repository name`に`git-practice`を記載 -> Create repository を押下 610 | 611 | ![new-repo2](./images/new-repo2.png) 612 | 613 | ローカルでは事前にリポジトリを作成しているので`…or push an existing repository from the command line`内に記載された内容を全てローカルで実行しましょう(パスフレーズを要求されたら設定したパスフレーズを入力しましょう) 614 | 615 | ![new-repo3](./images/new-repo3.png) 616 | 617 | 注:以下`XXX`は各自の GitHub アカウント名となる 618 | 619 | ``` 620 | $ git remote add origin git@github.com:XXX/git-practice.git 621 | $ git branch -M main 622 | $ git push -u origin main 623 | Warning: Permanently added 'github.com,52.192.72.89' (RSA) to the list of known hosts. 624 | Enumerating objects: 4, done. 625 | Counting objects: 100% (4/4), done. 626 | Delta compression using up to 4 threads 627 | Compressing objects: 100% (3/3), done. 628 | Writing objects: 100% (4/4), 635 bytes | 635.00 KiB/s, done. 629 | Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 630 | To github.com:XXX/git-practice.git 631 | * [new branch] main -> main 632 | Branch 'main' set up to track remote branch 'main' from 'origin'. 633 | ``` 634 | 635 | ブラウザをリロードして Git の演習で作成した内容が反映されていることを確認しましょう 636 | 637 | ![new-repo4](./images/new-repo4.png) 638 | 639 | ### 開発サイクル 640 | 641 | ここからは Git と GitHub を組み合わせ、「**issue -> branch -> add -> commit -> push、pull request -> merge**」までの開発フローを行っていきます 642 | 643 | ### issue 644 | 645 | GitHub の画面から 646 | 647 | issues -> New issue 押下 648 | 649 | ![issue](./images/issue.png) 650 | 651 | title`README編集`Write`fugahogepiyoを追記する`を記載 -> Submit new issue 押下 652 | 653 | ![issue2](./images/issue2.png) 654 | 655 | issue が登録されていること`#1`はこの issue のパーマリンク。GitHub では様々なパーマリンックがあります 656 | 657 | ![issue3](./images/issue3.png) 658 | 659 | ### branch 660 | 661 | ローカルリポジトリではデフォルトブランチの main で活動してることを確認しましょう。`*`のポインターが付いているブランチが現在作業しているブランチです 662 | 663 | ``` 664 | $ git branch 665 | * main 666 | ``` 667 | 668 | issue に紐づく作業を行う branch`modify-readme`を作成しましょう 669 | 670 | ``` 671 | $ git branch modify-readme 672 | $ git branch 673 | * main 674 | modify-readme 675 | ``` 676 | 677 | 作業する branch を`main`から`modify-readme`に遷移しましょう 678 | 679 | ``` 680 | $ git switch modify-readme 681 | Switched to branch 'modify-readme' 682 | ``` 683 | 684 | 現在の作業 branch が`modify-readme`にポインタが指し示していることを確認しましょう 685 | 686 | ``` 687 | $ git branch 688 | main 689 | * modify-readme 690 | ``` 691 | 692 | ### README.md 編集 693 | 694 | issue に記載した作業内容を README.md に対して編集しましょう 695 | 696 | ``` 697 | $ vi README.md 698 | $ cat README.md 699 | # git-practice 700 | fugahogepiyo 701 | ``` 702 | 703 | ### add&commit 704 | 705 | ステータス確認 706 | 707 | ``` 708 | $ git status 709 | On branch modify-readme 710 | Changes not staged for commit: 711 | (use "git add ..." to update what will be committed) 712 | (use "git restore ..." to discard changes in working directory) 713 | modified: README.md 714 | 715 | no changes added to commit (use "git add" and/or "git commit -a") 716 | ``` 717 | 718 | diff 719 | 720 | ``` 721 | $ git diff 722 | diff --git a/README.md b/README.md 723 | index 3e4b5a2..40551f9 100644 724 | --- a/README.md 725 | +++ b/README.md 726 | @@ -1 +1,2 @@ 727 | # git-practice 728 | +fugahogepiyo 729 | ``` 730 | 731 | add 732 | 733 | ``` 734 | $ git add . 735 | ``` 736 | 737 | commit(コミットメッセージに issue`#1`の作業であることを記載しましょう) 738 | 739 | ``` 740 | $ git commit -m "#1 modify README.md" 741 | [modify-readme 8f20d8c] #1 modify README.md 742 | 1 file changed, 1 insertion(+) 743 | ``` 744 | 745 | ステータス確認 746 | 747 | ``` 748 | $ git status 749 | On branch modify-readme 750 | nothing to commit, working tree clean 751 | ``` 752 | 753 | ### GitHub origin の確認 754 | 755 | GitHub リポジトリ(今回はこちらが origin)を確認しましょう 756 | 757 | 注:`XXX`は各 GitHub ユーザが表示される 758 | 759 | ``` 760 | $ git remote -v 761 | origin git@github.com:XXX/git-practice.git (fetch) 762 | origin git@github.com:XXX/git-practice.git (push) 763 | ``` 764 | 765 | ### push 766 | 767 | 作成した modify-readme を GitHub リポジトリ`git-practice`に push しましょう 768 | 769 | ``` 770 | $ git push origin modify-readme 771 | Enter passphrase for key '/Users/miurahironori/.ssh/id_rsa': 772 | Enumerating objects: 5, done. 773 | Counting objects: 100% (5/5), done. 774 | Writing objects: 100% (3/3), 279 bytes | 139.00 KiB/s, done. 775 | Total 3 (delta 0), reused 0 (delta 0) 776 | remote: 777 | remote: Create a pull request for 'modify-readme' on GitHub by visiting: 778 | remote: https://github.com/hironomiu/git-practice/pull/new/modify-readme 779 | remote: 780 | To github.com:hironomiu/git-practice.git 781 | * [new branch] modify-readme -> modify-readme 782 | ``` 783 | 784 | GitHub 上で push された branch を確認しましょう 785 | 786 | ![push](./images/push.png) 787 | 788 | 今会作成した`modify-readme`などが表示されていることを確認しましょう 789 | 790 | ![push2](./images/push2.png) 791 | 792 | ### pull request の作成と merge 793 | 794 | GitHub の画面から`Pull request`タブを選択 -> `New pull request`を押下(`Compare & pull request`でも同様のことは可能) 795 | 796 | ![pr](./images/pr.png) 797 | 798 | `modify-readme`を選択 -> `Create pull request`を押下 799 | 800 | ![pr2](./images/pr2.png) 801 | 802 | Write`fixed #1`を記載 -> `Create pull request`を押下 803 | 804 | ![pr3](./images/pr3.png) 805 | 806 | `Merge pull request`を押下(実際にはソースコードレビューを行った上で行う) 807 | 808 | ![pr4](./images/pr4.png) 809 | 810 | `Confirm merge`を押下 811 | 812 | ![pr5](./images/pr5.png) 813 | 814 | `Delete branch`を押下(開発スタイルで残したい場合は不要) 815 | 816 | ![pr6](./images/pr6.png) 817 | 818 | `Pull requests`タブを選択。pull request が存在しない(close されている)ことを確認 819 | 820 | ![pr7](./images/pr7.png) 821 | 822 | `issues`タブを選択。issue が存在しない(close されている)ことを確認 823 | 824 | ![pr8](./images/pr8.png) 825 | 826 | `<>Code`タブを選択`README.md`に`fugahogepiyo`が記載されていること 827 | 828 | ![pr9](./images/pr9.png) 829 | 830 | ## ローカル取り込み(fetch & merge) 831 | 832 | ここではリモート GitHub リポジトリの main からローカルの main に最新の取り込みを行います 833 | 834 | branch の確認(このオペレーションでは`modify-readme`が作業 branch としてさされている) 835 | 836 | ``` 837 | $ git branch 838 | main 839 | * modify-readme 840 | ``` 841 | 842 | mainb に遷移する 843 | 844 | ``` 845 | $ git switch main 846 | Switched to branch 'main' 847 | Your branch is up to date with 'origin/main'. 848 | ``` 849 | 850 | branch の確認(`main`を差していること) 851 | 852 | ``` 853 | $ git branch 854 | * main 855 | modify-readme 856 | ``` 857 | 858 | リモート GitHub リポジトリの main の最新を fetch でローカルに取得する 859 | 860 | ``` 861 | $ git fetch origin main 862 | Warning: Permanently added 'github.com,52.69.186.44' (RSA) to the list of known hosts. 863 | remote: Enumerating objects: 1, done. 864 | remote: Counting objects: 100% (1/1), done. 865 | remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 866 | Unpacking objects: 100% (1/1), 620 bytes | 620.00 KiB/s, done. 867 | From github.com:hironomiu/git-practice 868 | * branch main -> FETCH_HEAD 869 | fc9aa86..6ee5cfa main -> origin/main 870 | ``` 871 | 872 | diff 873 | 874 | ``` 875 | $ git diff HEAD FETCH_HEAD 876 | diff --git a/README.md b/README.md 877 | index 3e4b5a2..40551f9 100644 878 | --- a/README.md 879 | +++ b/README.md 880 | @@ -1 +1,2 @@ 881 | # git-practice 882 | +fugahogepiyo 883 | ``` 884 | 885 | ローカルの main リポジトリにリモートリポジトリから取得した FETCH_HEAD を merge で取り込みましょう 886 | 887 | ``` 888 | $ git merge FETCH_HEAD 889 | Updating fc9aa86..6ee5cfa 890 | Fast-forward 891 | README.md | 1 + 892 | 1 file changed, 1 insertion(+) 893 | ``` 894 | 895 | diff(何もないので同じ状態) 896 | 897 | ``` 898 | $ git diff HEAD FETCH_HEAD 899 | ``` 900 | 901 | 確認(リモートリポジトリの内容`fugahogepiyo`が取り込まれていることを確認) 902 | 903 | ``` 904 | $ cat README.md 905 | # git-practice 906 | fugahogepiyo 907 | ``` 908 | 909 | 今回はリモートリポジトリから fetch->merge でローカルリポジトリの main に最新を取り込んだが、ローカルで別 branch で開発した内容は直接 main に merge することも可能です 910 | 911 | ## CONFLICT の解消 912 | 913 | ここでは CONFLICT を発生させ解決していきます。ここまで行ったローカルリポジトリ(ターミナル 1 と呼ぶ)と別でもう一つローカルリポジトリを作成(`clone`にて、ターミナル 2 と呼ぶ)しオペレーションは行っていきます。 914 | 915 | ### clone 916 | 917 | GitHub リポジトリ -> `Code`プルダウン -> `SSH`タブ選択 -> クリップボードにコピー 918 | 919 | ![clone](./images/clone.png) 920 | 921 | ここまでのローカルリポジトリのディレクトリとは別ターミナル(ターミナル2)を用意し、任意の別ディレクトリでクリップボードにコピーした内容を`git clone `のあとにペーストし実行しましょう 922 | 923 | 注:`XXX`はコピーした自分の GitHub アカウント名が入る 924 | 925 | ``` 926 | $ git clone git@github.com:XXX/git-practice.git 927 | Cloning into 'git-practice'... 928 | Enter passphrase for key '/Users/miurahironori/.ssh/id_rsa': 929 | remote: Enumerating objects: 19, done. 930 | remote: Counting objects: 100% (19/19), done. 931 | remote: Compressing objects: 100% (8/8), done. 932 | remote: Total 19 (delta 4), reused 17 (delta 3), pack-reused 0 933 | Receiving objects: 100% (19/19), done. 934 | Resolving deltas: 100% (4/4), done. 935 | ``` 936 | 937 | ディレクトリ遷移 938 | 939 | ``` 940 | $ cd git-practice 941 | ``` 942 | 943 | ### ターミナル 1(最初のリポジトリ)で作業 944 | 945 | `first`branch の作成と遷移、確認(`first`を指し示していること) 946 | 947 | ``` 948 | $ git branch first 949 | $ git switch first 950 | Switched to branch 'first' 951 | $ git branch 952 | * first 953 | main 954 | modify-readme 955 | ``` 956 | 957 | README.md の末行に`first`の追記編集 958 | 959 | ``` 960 | $ vi README.md 961 | $ cat README.md 962 | # git-practice 963 | fugahogepiyo 964 | first 965 | ``` 966 | 967 | add と commit 968 | 969 | ``` 970 | $ git add . 971 | $ git commit -m "first" 972 | [first b103e8d] first 973 | 1 file changed, 1 insertion(+) 974 | ``` 975 | 976 | GitHub リポジトリに`first`branch を push 977 | 978 | ``` 979 | # git push origin first 980 | Warning: Permanently added 'github.com,13.114.40.48' (RSA) to the list of known hosts. 981 | Enumerating objects: 5, done. 982 | Counting objects: 100% (5/5), done. 983 | Delta compression using up to 4 threads 984 | Compressing objects: 100% (2/2), done. 985 | Writing objects: 100% (3/3), 302 bytes | 302.00 KiB/s, done. 986 | Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 987 | remote: 988 | remote: Create a pull request for 'first' on GitHub by visiting: 989 | remote: https://github.com/hironomiu/git-practice/pull/new/first 990 | remote: 991 | To github.com:hironomiu/git-practice.git 992 | * [new branch] first -> first 993 | ``` 994 | 995 | branches タブを選択し`first`branch が存在することを確認 996 | 997 | ![branch](./images/branch.png) 998 | 999 | ### ターミナル 2(新しいリポジトリ)で作業 1000 | 1001 | `second`branch の作成と遷移、確認(`second`を指し示していること) 1002 | 1003 | ``` 1004 | $ git branch second 1005 | $ git switch second 1006 | Switched to branch 'second' 1007 | $ git branch 1008 | main 1009 | * second 1010 | ``` 1011 | 1012 | README.md の末行に`second`の追記編集 1013 | 1014 | ``` 1015 | $ vi README.md 1016 | $ cat README.md 1017 | # git-practice 1018 | fugahogepiyo 1019 | second 1020 | ``` 1021 | 1022 | add と commit 1023 | 1024 | ``` 1025 | $ git add . 1026 | $ git commit -m "second" 1027 | [second 8534bb0] second 1028 | 1 file changed, 1 insertion(+) 1029 | ``` 1030 | 1031 | GitHub リポジトリに`second`branch を push 1032 | 1033 | ``` 1034 | $ git push origin second 1035 | Warning: Permanently added 'github.com,13.114.40.48' (RSA) to the list of known hosts. 1036 | Enumerating objects: 5, done. 1037 | Counting objects: 100% (5/5), done. 1038 | Delta compression using up to 4 threads 1039 | Compressing objects: 100% (2/2), done. 1040 | Writing objects: 100% (3/3), 303 bytes | 303.00 KiB/s, done. 1041 | Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 1042 | To github.com:hironomiu/git-practice.git 1043 | 6ee5cfa..8534bb0 second -> second 1044 | ``` 1045 | 1046 | branches タブを選択し`second`branch が存在することを確認 1047 | 1048 | ![branch2](./images/branch2.png) 1049 | 1050 | ### ターミナル 1、pull request の作成と merge 1051 | 1052 | GitHub の画面から`Pull requests`タブ -> `New pull request`を押下 1053 | 1054 | ![pr-a](./images/pr-a.png) 1055 | 1056 | `first`branch を選択 -> `Create pull request`を押下 1057 | 1058 | ![pr-a2](./images/pr-a2.png) 1059 | 1060 | Write`first`を記載 -> `Create pull request`を押下 1061 | 1062 | ![pr-a3](./images/pr-a3.png) 1063 | 1064 | `Confirm merge`を押下 1065 | 1066 | ![pr-a4](./images/pr-a4.png) 1067 | 1068 | `Delete branch`は省略する 1069 | 1070 | ### ターミナル 2、pull request の作成と merge 1071 | 1072 | GitHub の画面から`Pull requests`タブ -> `New pull request`を押下 1073 | 1074 | ![pr-a](./images/pr-a.png) 1075 | 1076 | `second`branch を選択 -> `Create pull request`を押下 1077 | 1078 | ![pr-b2](./images/pr-b2.png) 1079 | 1080 | Write`second`を記載 -> `Create pull request`を押下 1081 | 1082 | ![pr-b3](./images/pr-b3.png) 1083 | 1084 | conflict が発生していることを確認 1085 | 1086 | ![pr-b4](./images/pr-b4.png) 1087 | 1088 | ### ターミナル 2 でコンフリクトの解消 1089 | 1090 | リモートリポジトリの main の最新を fetch 1091 | 1092 | ``` 1093 | $ git fetch origin main 1094 | ``` 1095 | 1096 | branch の確認(`second`であること) 1097 | 1098 | ``` 1099 | $ git branch 1100 | main 1101 | * second 1102 | ``` 1103 | 1104 | `second`branch に FETCH_HEAD を merge で取り込む 1105 | 1106 | ``` 1107 | $ git merge FETCH_HEAD 1108 | Auto-merging README.md 1109 | CONFLICT (content): Merge conflict in README.md 1110 | Automatic merge failed; fix conflicts and then commit the result. 1111 | ``` 1112 | 1113 | コンフリクトの内容を確認 1114 | 1115 | ``` 1116 | $ cat README.md 1117 | # git-practice 1118 | fugahogepiyo 1119 | <<<<<<< HEAD 1120 | second 1121 | ======= 1122 | first 1123 | >>>>>>> 7b868e363d289674d599834ca25fc0517cda97fe 1124 | ``` 1125 | 1126 | CONFLICT を解消(今回は末行に`second`,`first`の順で編集、実際のコンフリクトはあるべき姿に編集する) 1127 | 1128 | ``` 1129 | $ vi README.md 1130 | $ cat README.md 1131 | # git-practice 1132 | fugahogepiyo 1133 | second 1134 | first 1135 | ``` 1136 | 1137 | add&commit 1138 | 1139 | ``` 1140 | $ git add . 1141 | $ git commit -m "CONFLICTの修正" 1142 | [second a1807fb] CONFLICTの修正 1143 | ``` 1144 | 1145 | リモートリポジトリに`second`branch の最新 commit を push 1146 | 1147 | ``` 1148 | $ git push origin second 1149 | Warning: Permanently added 'github.com,52.69.186.44' (RSA) to the list of known hosts. 1150 | Enumerating objects: 7, done. 1151 | Counting objects: 100% (7/7), done. 1152 | Delta compression using up to 4 threads 1153 | Compressing objects: 100% (2/2), done. 1154 | Writing objects: 100% (3/3), 368 bytes | 368.00 KiB/s, done. 1155 | Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 1156 | To github.com:hironomiu/git-practice.git 1157 | 8534bb0..a1807fb second -> second 1158 | ``` 1159 | 1160 | GitHub の`Pull reqests`タブ画面でグリーンになっていることを確認し`Merge pull request`を押下 1161 | 1162 | ![pr-b5](./images/pr-b5.png) 1163 | 1164 | `Confirm merge`を押下 1165 | 1166 | ![pr-b6](./images/pr-b6.png) 1167 | 1168 | Delete branch は省略`<>Code`タブ、`README.md`に`second first`の記述が追加されていること 1169 | 1170 | ![pr-b7](./images/pr-b7.png) 1171 | 1172 | ここまででコンフリクトの解消は完了です 1173 | --------------------------------------------------------------------------------