blog2020/01/09「GitHub実践入門」を読んだGit実践技術書Gitに関する本です。Flowの紹介などGitの多岐にわたる内容を紹介しています。この一冊を読めば大抵のことは理解でき、使いこなせるようになります。使い始めのときに読んでおくと学習が捗ります。実際に使ってみるのが一番わかり易いと思いますので、勉強中の方やGitを利用する予定のある方は本を読みつつ実際にGitHubを触ってみましょう。プルリクエストの送り方や対応方法なども書かれていて、実際の現場でのフローがわかるのではないかと思います。入門の内容なので特殊な使い方やいざというときの対処方法はそれほど書かれていません、コンフリクトの解消や間違ったコミットの巻き戻しなどそういった点には注意しましょう。業務で使ったことがあるので内容はすでに知っているものでしたが、備忘や共有の際にまとまっていると便利なのでこの記事にまとめておきます。使うコマンドのメモGitでよく使うコマンドのメモです。initリポジトリの初期化。.gitディレクトリが生成される。statusリポジトリの状態確認。addステージに追加。対象とする範囲を指定できる。.で現在のディレクトリ以下全部、ディレクトリやファイル名を指定するとその範囲のみが対象になる。commitステージ領域のファイルをコミット。メッセージは1行目にコミットの内容の要約、2行目が空行、3行目以降が詳細な理由や目的、とするのが一般的です。-mでメッセージをオプションに渡せる。addを行っていなくても、自動で変更・削除されたファイルをコミットします。新規作成したファイルは対象になりません。--amendで直前のコミットメッセージを修正できます。メッセージに「#1」を含めることで該当するIssueに関連付けさせて表示することができます。#1」とすればIssueをCloseできます。logリポジトリのコミットログを確認する。ディレクトリやファイル名を渡すと、その範囲が対象になります。-pを付けると差分が表示されます。ブランチのマージなどの状況が視覚的に表示されます。diff現在のワークツリーとステージ領域の差分を表示。HEADを付けることで、ワークツリーと最新コミットの差分が確認できます。この場合のHEADは作業しているブランチの最新コミットを参照するポインタとなってます。branchリポジトリのブランチを一覧表示します。名前を渡すと新規でブランチを作成できます。リモートブランチも含めた情報を表示。xxxブランチを削除します。checkoutブランチを切り替えます。付けると、xxxという名前のブランチを新規作成し切り替えます。付けると、1つ前にいたブランチに移動できます。するとyyyブランチを元にxxxブランチを作成して切り替えます。origin/xxxを指定して使うことがたまに有ります。xxxxxxブランチを現在のブランチにマージします。付けることでマージコミットが発生して、あとからの参照や取り消しがやりやすくなります。reset指定した状態にワーキングツリーを戻します。コミットのハッシュ値を指定してその位置まで戻ることができます。するとHEADを含めた2つのコミットを対象に合体させて、新しい一つのコミットとして書き換えます。remote登録されているリモートリポジトリを確認。参照用の名前を表示する。ローカルリポジトリに指定したリモートリポジトリを登録。originという名前でリモートリポジトリを指定する。xxxで参照しているリモートリポジトリを削除。xxxで参照しているリモートリポジトリをyyyにリネーム。pushリモートリポジトリに送信。すると、現在のローカルリポジトリの内容をoriginという名前のリモートリポジトリの、masterブランチに送信します。masterに設定されます。fetch現在のブランチにリモートリポジトリのデータを取得。pull最新のリモートリポジトリを取得。fetchとmergeを行っている。cloneリモートリポジトリを取得。cloneした直後はmasterブランチなはずで、originという名前でリモートリポジトリが参照できる。ローカルのタグを全部リモートへpushGitを用いた開発フローの例リモートリポジトリのforkは行わないことが前提のフロー。各メンバーがローカルリポジトリとリモートリポジトリのみ管理すれば良くなるためシンプル。Flowシンプルなワークフローで頻繁にデプロイすることを前提としてものです。覚えやすくとっつきやすいですが、masterブランチの状態をしっかり安全にしておくために注意する必要があります。シンプルなことも有り高速な開発フローに向いているそうです。masterブランチは常にデプロイ可能な状態を保つ。作業を行うときはローカルでブランチを作成してコミット。リモートにも同名のブランチを作っておく。定期的にリモートの同名ブランチへpushする。必要であればmasterへプルリクエストを行いレビュー等をする。作業が完了したら、masterへマージする。新しいブランチはmasterから作成する。ブランチ名はやる内容がわかるようにして、レビュー等を受けやすいようにコミットの粒度をなるべく小さくする。常にデプロイできるマスターブランチを維持するためにテストやCIがとても重要です。Flowよりも結構ややこしいですが、その分実際の現場では役に立つことが多いと思います。Flowをサポートするツールがあるので、そちらを使うと快適に開発に参加できます。可能であれば仕組みやフローの理解のために、自分で環境を用意して動かしてみるといいです。基本的には以下のブランチができます。masterdevelopfeature(機能ごとに名前を付ける)release(バージョンごとに名前を付ける)hotfix(バージョンごとに名前を付ける)開発からリリースまでの手順の概要は以下です。不具合があった場合はタグやmasterブランチからhotfixを作成して修正hotfixで修正をおこない完了したらリモートへpush、masterへプルリクエストhotfixの内容をdevelopにもプルリクエストするhotfixは削除おわりに会社でGitを初めて導入する際の懸念点やメリットなども紹介されており、他のバージョン管理からの乗り換え時の検討や提案にも役に立つ知識でした。さまざまなCI関連のツールの紹介や設定方法も書かれており、実際の開発で使えると心強い情報がたくさんありました。Flowなど実際にやって見ないと理解が難しいものもありますので、事前知識として頭に入れた後は機会を見つけて積極的に参加すればすぐに身につくと思います。editerマークダウン特化エディタアプリマークダウンのプレビュー・よく使う記号を入力するボタンが利用できます。野々市市コミュニティバスのっティ時刻表アプリルートとバス停を選択して時刻表が確認できます石川県野々市市に住むフリーランスエンジニア。応用情報とDBスペシャリストの資格を保有。Webシステムの構築、スマホアプリ、プログラミングメンターなどの依頼に対応できます。