Hit the books!!

プログラミング学習記録

Gitの超基本

5ヶ月前にGitの勉強をしたっきりでそれ以降さわってなかったらすっかり忘れてました。

メモアプリを作成する課題の提出方法が、GitHubにpublicリポジトリを作成してアップするということだったので、その流れに沿ってみていく。

概要図↓

f:id:ud_ike:20200914201223p:plain

※ステージングエリアはインデックスとも呼ぶ。

publicリポジトリにpushするまでの流れ

①git initする

% git init
Initialized empty Git repository in /Users/ほにゃらら/sinatra_memo/.git/

.gitファイルができる。

% ls -a
.   ..  .git    memo.rb memos   public  views

②git statusでリポジトリの状態を確認

% git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    memo.rb
    memos/
    public/
    views/

nothing added to commit but untracked files present (use "git add" to track)

まだGitの管理下にないので"Untracked"な状態。

③git addする

% git add .

git add .でカレントディレクトリ配下のすべてのファイルをまとめて追加できる。便利。

④git statusで確認

% git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    new file:   memo.rb
    new file:   memos/memos.json
    new file:   public/public.css
    new file:   views/details.erb
    new file:   views/edit.erb
    new file:   views/layout.erb
    new file:   views/memos.erb
    new file:   views/new.erb

git addでステージングエリアに登録されたので、"new file"として表示される。

⑤git commitする

% git commit
[master (root-commit) 02e0203] sinatraメモアプリ作成課題
 8 files changed, 255 insertions(+)
 create mode 100644 memo.rb
 create mode 100644 memos/memos.json
 create mode 100644 public/public.css
 create mode 100644 views/details.erb
 create mode 100644 views/edit.erb
 create mode 100644 views/layout.erb
 create mode 100644 views/memos.erb
 create mode 100644 views/new.erb

コミットを実行し、コミットメッセージを書く。コミットメッセージについては後述。

念のためgit statusで確認。

% git status
On branch master
nothing to commit, working tree clean

リポジトリを作成しpushする

GitHub上で"memoapp"というpublicリポジトリを作成した。

URLを指定する。

% git remote add origin https://github.com/ユーザID/memoapp.git

そしてpushだ!!が、うまくいかない。

% git push origin master
remote: Invalid username or password.

前にGitHubのユーザIDを変更したことがあったのでそのせいかなと思い、リセットを試みる。

% git config --global credential.helper osxkeychain

新たにIDとパスワードを入力してみたが変わらず。 ってことはパスワードが間違ってる...?と思って一度パスワードを再設定した。

しかし相変わらずダメ。

remote: Invalid username or password.

ググってリモートの設定を修正してみた。

参考:GitHub へのアクセスで remote: Invalid username or password と言われたので、git remote set-url でリポジトリを指定した。 - Qiita

% git remote set-url origin git@github.com:ユーザID/memoapp.git

再びpushしてみるとできた!

% git push origin master
Enumerating objects: 13, done.
Counting objects: 100% (13/13), done.
Delta compression using up to 4 threads
Compressing objects: 100% (11/11), done.
Writing objects: 100% (13/13), 3.21 KiB | 821.00 KiB/s, done.
Total 13 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), done.
To github.com:udaikue/memoapp.git
 * [new branch]      master -> master

修正して再提出

課題提出後、修正があったので再提出することになった。

% git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   memo.rb
    modified:   memos/memos.json
    modified:   views/details.erb
    modified:   views/memos.erb

すべてのファイルを変更したわけじゃなく、これら4つのファイルを変更した。

% git add memo.rb memos/memos.json views/details.erb views/memos.erb

ファイル名を全部並べて書いたけど、オプションがあります。

参考:git add -u と git add -A と git add . の違い | note.nkmk.me

コミットして無事終了。

 % git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   memo.rb
    modified:   memos/memos.json
    modified:   views/details.erb
    modified:   views/memos.erb

コミットメッセージに何を書くか問題

フィヨルドブートキャンプのメンターであるkomagataさんの記事↓

俺の考えるコミットメッセージの書き方 - komagataのブログ

これ、心にとめておきたい。

「いつ (When) 」コードに対していつ変更を加えたのかはタイムスタンプを見れば分かる

「どこで (Where) 」コードに対して何を変更を加えたのかはリソース (file/dir) 名で分かる

「誰が (Who) 」コードに対して誰が変更を加えたのかは author を見れば分かる

「何を (What) 」コードに対してどうやって変更を加えたのかは diff を読めば分かる

「なぜ (Why) 」コードに対してなぜ変更を加えたのかはコミットメッセージを読めば分かる

「どうやって (How) 」コードに対してどうやって変更を加えたのかは実装を読めば分かる