Chiroru's Diary

日々の学びをちょこちょこメモしていきます

プルリクに関して

【目次】

Pull Request

同じリポジトリを共有しその中で行うPR

PRされたものを、ローカルで動作確認したければ以下。 (※特に他人のPRを受けた時のようなブランチが存在していない場合)

$ git fetch  
# 変更を取得  

$ git branch -a 
# ブランチを確認
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/update-readme

$ git checkout -b update-readme origin/update-readme  
# チェックアウト・動作確認

参考:GitHub初心者はForkしない方のPull Requestから入門しよう

github 空のPRの作り方

作業を始めるにあたり、初めにプルリクエストを作る。PRには何かしらのcommitが必要。それに際して 空のcommit を送ることでPRをスタートする方法がある。

# git clone <URL>
# git checkout -b <ブランチ名>  

$ git commit --allow-empty -m "PRのタイトル"    
# 空のコミット  

$ git push origin <ブランチ名> 
# リモートブランチに push
# ※まだリモートブランチに紐づいていない  

$ git branch -u origin/<リモートブランチ名>  
# リモートブランチと紐付け

$ git branch -vv  
# ローカルブランチがどのリモートブランチと紐づいてるか確認

参考:github で 空のプルリクエストを作る手順

※上記について追記。

$ git push origin <ブランチ名> 
# リモートブランチに push
# ※まだリモートブランチに紐づいていない  

$ git branch -u origin/<リモートブランチ名>  
# リモートブランチと紐付け

↑これを書いていた時、リモートブランチってなんだ?master? 前チーム開発の時やってなかったような?と、まとめながら気になった。 そこで知人に質問し、整理した結果

  • リモートブランチと紐づけ=上流ブランチ設定(指定)
  • $ git push origin <ローカルブランチ名>=リモート追跡ブランチ作成

ローカルブランチとリモート追跡ブランチを紐づけることでgit pushだけでpushできるようになる。ので、$ git branch -u origin/<リモートブランチ名> はマストではないということ。

参考:Gitのリモート追跡ブランチ・追跡ブランチ・上流ブランチ

PR前のチェックリスト

以下は読みながらこちらを書き出した。
参考:初心者がRailsプロジェクトへの初PRする前に見るチェックリスト

  • Files changedを確認
    PRを作ったら必ず確認すること。

  • lintが通っているか
    rubyだったらrubocop、jsだったらeslintを通すこと。

  • ファイルの末尾に改行が無いか
    自動設定にしておくこと。

  • 同じコミットログが続いていないか・英語/日本語になってないか・雑でないか
    言語は統一した方が良い。プロジェクトのルールに従う。後から見たときにわかりやすいよう意識する。

  • コミットしたユーザーアイコンがOctcatになっていないか
    gitクライアントに設定したメアドがGitHubのユーザーのメアドと違う場合に起こる。 他の人から見ると誰だこいつとなるので注意。

  • 無意味なファイルがないか
    ジェネレータなどが作成した中身のないファイル(module・test・fixturesなど)は消すこと。そのファイルの意味をきちんと調べる。

  • gemのgroupを確認

  • 不要なrespond_to
    scaffoldなどでできる不要なrespond_toやformatを消すこと。

  • リファクタリング」を多用しない
    リファクタリングはプログラムの振る舞いを変えずに内部構造を変えること。

  • 秘密情報がコミットされていないか

    oauthのsecretとか。コード中では環境変数にしておこう。 これをやると、gitで過去を修正したとしてもGitHubのキャッシュに残ってしまい、完全に消すにはGitHubのサポートに連絡するとか面倒なことになる。

  • .gitignoreは適切か
    特定の環境の人向けのファイルは.gitignoreに書かず、自分のマシン固有の設定に書くこと。(.DS_Storeはmacだけのファイルみたいな)

  • 大量の依存gemがコミットされていないか

    gemのインストール場所をvendro/bundleとかにしてあって、その中にある大量のgemのファイルがコミットされてしまっていないか確認

  • マジックナンバーが含まれていないか

  • メソッドが長すぎないか

GitHubへのアクセス

一般的にはsshより、httpsでのアクセスが推奨されているのでそちらを使うこと。
(理由はhttpsの方が負荷分散ができ、GitHub的に都合が良いため)

  • GitHubへのアクセス(ログイン)はより安全な2要素認証を使う。(設定済み)

2 要素認証の有効化後は、GitHubコマンドラインからアクセスする際にPWの代わりに個人アクセストークンor SSH キーを使わなければいけない。

Terminalから個人アクセストークンでアクセス

httpsアクセスで認証時のPW入力の際、取得したアクセストークンを貼り付け使用する。