あなたはgithub使ってますか?
僕ですか?僕はcloneするばっかりでサービス自体は全く使ってないです笑
そんな超がつくほどのど初心者がgithubで他人のリポジトリにPull Requestを行ってみた!
既にいろんな方がやっているので、とくにメモする内容でもないが手順が多くて忘れるので完全に個人的な備忘録。
Pull Requestには二通りの方法がある模様。
2013/08/13 GitHubの新デザインに対応するために記事内容・画像をアップデートしました。こんにちは、ブログ記事を書くのが約2年ぶりのruedapです。さっそくですが、Pull Request(プルリクエスト)機能を使ったことはありますか?GitHubの代表的な機能で、「pull req」や「PR」とも略されたりして、名前はよく聞きますよね。この記事は、Gitはいちおう入門済みで、GitHubも使い始めたけど、Pull Request機能はまだ使ったことがない、そ... GitHub初心者はForkしない方のPull Requestから入門しよう | qnyp blog - qnyp blog |
よくあるForkタイプ
Pull Request機能の解説としてよくあるのは「他の人のリポジトリを自分のGitHubアカウントにFork(コピー)してきて、変更を加えて、それを元のリポジトリに取り込んでもらうようにリクエストを送信する」といった感じのものではないでしょうか。
Forkしないタイプ
Forkしないタイプの「同じリポジトリを共有して、その中だけで行うPull Request」というものがあることを知りました。(以降、この方式を「リポジトリ共有式」と呼びます。これらの呼称は筆者が便宜上付けたものです)
※GitHubには、Fork & Pull Model / Shared Repository Model と書かれています。
ForkしないタイプはGitHubリポジトリにプッシュする権限が必要なので今回はよくあるForkタイプでやってみました。
今回はwokamotoさんのstaticpress-s3にプルリクエストを送ってみます。
リポジトリにアクセスして右上にある「fork」ボタンを押下。
forkが始まります
無事に終わるとぱっと見は変わらないように見えますがちゃんとフォークされてます。
早速forkしたリポジトリをcloneします。
右下にレポジトリのgitアドレスがあるので「copy to clipboard」ボタンを押下してアドレスをコピーします。
次に自分のローカル環境でcloneします。
$ git clone https://github.com/mogmet/staticpress-s3.git Cloning into 'staticpress-s3'... remote: Counting objects: 14, done. remote: Compressing objects: 100% (10/10), done. remote: Total 14 (delta 4), reused 14 (delta 4) Unpacking objects: 100% (14/14), done.
しかし慌ててここですぐにファイルを編集してはいけない。
cloneをしたあとに作業用ブランチをきるのがしきたりらしい
hnwの日記 2011-05-28 - hnwの日記 |
いきなりpull request用のブランチで作業するのではなく、作業用にさらに別のブランチを作ることをお勧めします。簡単な修正をするつもりでも、試行錯誤して何度もcommitしたり、最初からやり直したりするかもしれません。そのための作業用ブランチを別に切っておくというわけです。
べ、別に生き急いで編集しちゃったわけじゃないんだからね!
ということで早速cloneしたディレクトリに移動してブランチをきる。
$ cd staticpress-s3 $ git checkout -b fix_mimetype_bug Switched to a new branch 'fix_mimetype_bug'
ブランチが変わっているかを確認する。
$ git branch -v * fix_mimetype_bug 910938d some fix master 910938d some fix
ここまできてようやく編集を始める。
編集が終わったら、ファイルの状態を確認してみる。
$ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: includes/class-S3_helper.php # no changes added to commit (use "git add" and/or "git commit -a")
modifiedと表示され変更がかかっていることがわかる。
変更箇所を確認してみる。
$ git diff diff --git a/includes/class-S3_helper.php b/includes/class-S3_helper.php index 36e13f5..b80d431 100644 --- a/includes/class-S3_helper.php +++ b/includes/class-S3_helper.php @@ -184,9 +184,12 @@ class S3_helper { // get file_type private function mime_type($filename){ static $info; - if (!isset($info)) - $info = new FInfo(FILEINFO_MIME_TYPE); - + if (!isset($info)) { + $magic_file = '/usr/share/misc/magic'; + $info = file_exists($magic_file) + ? new FInfo(FILEINFO_MIME_TYPE, $magic_file) + : new FInfo(FILEINFO_MIME_TYPE); + } $mime_type = file_exists($filename) ? $info->file($filename)
一応作者のコード記法にのっとって書いたつもり。
以上で問題なければコミット
$ git commit -a
コメントは一行目に概要、改行をあけて3行目から詳細の内容を書くのがしきたりらしい。
fix mime-type bug Default magic_file can't take cognizance of right mime-type. So I added magic_file option. # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # Committer: root <root@mogmet.com> # # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: includes/class-S3_helper.php
保存して終了するとコミットされる。
リポジトリにpushするまえに一応念のためどこにpushするのかを確認する。
git remote -v origin https://github.com/mogmet/staticpress-s3.git (fetch) origin https://github.com/mogmet/staticpress-s3.git (push)
問題なければ早速コミットした内容をリポジトリにpushする。
$ git push origin fix_mimetype_bug Username for 'https://github.com': mogmet Password for 'https://mogmet@github.com': To https://github.com/mogmet/staticpress-s3.git * [new branch] fix_mimetype_bug -> fix_mimetype_bug
いよいよ修正した内容を送信してみる。
フォーク元のリポジトリをみると「Compare & pull request」ボタンが現れているので押下してやる。
適当にそれっぽい文章書いて「Send pull request」ボタンを押下する。
これでPull Request完了。
あとはマージされるのを気長に待つ。
svnと比べるとステップ数が多いのですぐ忘れちゃいそうだが、何度かやれば覚えることを祈ります。
git is 難しい。
こんにちは。virapture…
View Comments
Reading your article helped me a lot and I agree with you. But I still have some doubts, can you clarify for me? I'll keep an eye out for your answers.
I am an investor of gate io, I have consulted a lot of information, I hope to upgrade my investment strategy with a new model. Your article creation ideas have given me a lot of inspiration, but I still have some doubts. I wonder if you can help me? Thanks.
Thank you very much for sharing, I learned a lot from your article. Very cool. Thanks. nimabi
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me. https://www.binance.info/uk-UA/join?ref=V2H9AFPY
Your article helped me a lot, is there any more related content? Thanks!