Programming

GUIクライアントGit Kraken使い方・勘どころのまとめ

ソースコード管理の重要性に今更ながら気づき、いよいよGitによるソースコード管理を始めました。Gitを使うには、ターミナル上でコマンドを叩く方法と、GitのGUIクライアントソフト上でマウス操作による方法があります。

Git初心者の私にとってはGUIクライアントソフトのほうが使いやすく、Gitの入り口としては最適かと感じました。クライアントソフトにはGit Krakenを使い、Git Krakenの使い方はUdemyの動画講座「Git入門: ノンプログラマーのための Git」を通じて学習しています。

やはり書籍で学ぶより、講師の方の説明を受けながら、実際の使用方法などのTipsを聞きながら覚えていくと使えるようになるものですね!

Udemyでの動画学習中に、分からない言葉や考え方がいくつもあり、自分なりにまとめましたので共有します。

Git Krakenの使い方・使用上の勘どころまとめ

※コミットはキレイにまとめることが重要視されている。以下はそのためのテクニック。「この機能どんなときに使うの??」をまとめました。

Amendとは

直前のコミットにはあとから内容を追加することが可能・・・これがAmend

Git Krakenでのやり方

  1. ファイルを編集
  2. そのファイルをステージング
  3. サマリーを書かずに、Amendにチェックを入れコミット

↑これで、直前のコミットをAmend(改正)できる
コミット直後に「あ、この作業も一緒にコミットすればよかった!」という作業はAmendでできる

Squashとは

複数のコミットをまとめたいとき・・・細かくわけたコミットを、あとから1つにまとめる時に使う

Git Krakenでのやり方

  1. 複数のコミットログをshiftキーを押しながら選択
  2. 右クリック「Squash 2 commits」を選択し、まとめる

TAGについて

リリースをしたタイミングなど、重要なコミットにコメントを付ける機能。大きな変更があった箇所にTAGを付けておくと、ログを見た時に変更点がわかりやすい。

Git Krakenでのやり方

コミットログでコミットを右クリックし「Create tag here」で追加できる。
Gitでは慣例的にソフトウェアのバージョン「v1.1」、「v1.2.23」などを入れることが多い。
バージョン番号の付け方はルールを決めておく。
WEBサイトであれば、リリース日などを入れることが多い「r20190714」など。

Git Flowとは

Git Flowとはブランチの使い分けのルール。

Git Flowはブランチ管理が複雑なため、頻繁な更新が発生するプロジェクトには向かない。更新頻度が高いプロジェクトは下記のGitHub Flowがよく使われる。

日本語訳:A successful Git branching model

Git Krakenでのやり方

file➡preferenes➡Git flowでGit Flowの階層がツリーに表示されるので、このGit Flowを編集していく。LOCALのGitフォルダとはリンクしている。

5種類のブランチ(枝)を使い分ける

  1. master
  2. develop
  3. release(フォルダ)
  4. feature(フォルダ)
  5. hotfixes(フォルダ)

mergeとrebaseの違い

mergeとは・・・2本のブランチを合流する方法の1つ

マージするとマージされる側(本流)もマージする側(支流)もブランチは残る。マージをする側、マージをされる側を間違えない事。

Git Krakenでのやり方

マージされる側(本流)に支流をマージする場合、本流を選んでおいて、支流をD&Dする
例)masterブランチを選択し、developブランチをD&Dする

rebaseとは・・・2本のブランチを1つにまとめる方法

リベースするとリベースされる側(本流)にリベースする側(支流)のブランチとその履歴が吸収される。リベースすると支流側の履歴は本流側で行われたことになる。(分かれたことがなかったことになる)

mergeとrebaseの違い

複数の変更を行った時、リベースの場合は間、間に入り込んで変更が履歴される。マージは最終のブランチに合流される。

チェリーピックとは・・・ブランチのマージやリベースをせずに、特定のコミットを他のブランチに反映したい場合に使うブランチの統合方法。

Git Krakenでのやり方

本流(masterブランチなど)を選択後、追加したいコミットログを右クリックし、「cherrypick commit」を選択。YES➡masterに追加。 NO➡commitはされず、ファイルの追加まで行われるので、さらに編集してコミットすれば良い。チェリーピックはあまり頻繁に行われる作業ではない

masterブランチ(公開用)
起点となるブランチ このブランチはWebサイトなら本番環境そのもののブランチ(世の中に出ているもの)
通常このブランチを直接編集してソース改変することは無い
編集する場合は、他のブランチをmergeかRebaseする
例えばバグ用のhotfixedブランチなどはrebase、releaseブランチはmergeなど。

developブランチ(開発用)
開発の起点となるブランチ。feature(フォルダ)ブランチとrelease(フォルダ)ブランチで開発

releaseブランチ
リリースするバージョンごとにブランチを作成(release/1.1など)
リリースをするためのバグなどを修正する作業はこのブランチで行う
releaseブランチの変更はdevelopブランチにも反映すること

featureブランチ
特に複数人で平行開発の場合は有効
機能ごとのブランチは開発サイドごとのブランチを作るなど自由
例)feature/change_design(デザイン変更)やfeature/develop_manage_system(バックエンド変更)
featureブランチは必ずdevelopブランチにマージする(mastarブランチに直接マージしない!)

hotfixesブランチ
masterブランチからの分岐ブランチ
公開されているアプリで不具合が見つかった場合に、masterブランチからhotfixesを作って、そのブランチにて修正
hotfixesのmasterへの適用はrebaseを使うと良い
hotfixesの修正が完了したらdevelopブランチにもrebaseすること
Git KrakenのGit Flowを使えば、hotfixのfinish時にmasterにもdevelopにも同時反映されるので(マージもrebaseも選択可能)便利。マージ忘れが無い
rebase後はhotfixesブランチは削除しても構わない
この運用方法であれば、masterブランチには一切手を加えずに運用できる

チーム開発でGitHubを使う設定

チームメンバーがGitHubのアカウントを持っていること。共有するGitHubのリモートリポジトリで「settings」メニューから「collaborators」からチームメンバーのメアドかユーザーネームを入れて招待する。

GitHubをGit Krakenで使う方法

初期設定 GitHub上でリモートリポジトリを作成
Git Hub上のリモートリポジトリへの接続方法
HTTPS・・・URLをGit Krakenに設定するだけなので手軽(ただ、何度もユーザ名/PASSを聞かれ、面倒)
SSH・・・初期設定が大変だが、こちらの方が使い勝手が良い

Git KrakenでのGitHubリポジトリ設定方法
エクスプローラーメニューから「Remote」の➡をクリック
Git HubでGit Krakenをログインしていれば「GitHub」ボタンでリモートリポジトリを参照できる(繋がらない時もある)
URLボタンで上記のHTTPSのURLを入れAdd Remoteボタンで、リモートできる
NAME・・・何でも良いが「origin」とするのが慣例
Pull URL/Push URL・・・上記のHTTPSのURLを入れる(GitHubの場合は両方同じもの)

SSHでのリモートリポジトリ接続方法(セキュリティの高い接続)
Git Krakenでの操作
Fileメニューから「Preferences」をクリック
Authentication➡Generalタブ
Use local SSH agent ・・・チェック無し
Generateボタンクリック
適当な場所に公開鍵/秘密鍵を作成
SSH Public Keyのコピーボタンを押して公開鍵の内容をクリップボードにコピーしておく
GitHub上で作成された公開鍵(.pubという拡張子が付いた方のファイル)を設定
GitHub profile画面から「settings」をクリック
SSH and GPG keysの項目に SSH keysを貼り付け Add SSH keyをクリック➡確定
Git Krakenの設定
GitHubからリポジトリをクローンする場合、GitHubのClone or downloadボタンから Use SSHのURLをコピー
GitKrakenでfileメニューからClone Repoを選択し
Clone with URLの項目に、GitHubのSSH URLを貼り付け➡clone the repo!をクリックし確定
cloneが完了すると画面上部に opne new repoと表示されるので許可➡cloneされたリポジトリが開く

Push作業(同期)

Pushとは・・・GitHub上に用意されたストレージにプロジェクトに”変更の履歴やファイル群”をすべてアップロードすることができる。チームメンバーや他のPCとのファイル共有が可能
Pushはブランチ単位で行う
Pushのタイミングは「プログラムが正しく動く状態」「他人に見せても良い状態」でPushする
運用ルールとしては、あまり頻繁に行わない方が良い(他人と履歴を共有してしまうため)
Git KrakenでのPush作業方法
masterブランチを選択し、Git Kraken画面上部の「Push」ボタンクリック
pushするリモートリポジトリを選択し「submit」ボタンクリック
これで、ローカルリポジトリの内容(masterブランチ)をGitHub上にアップすることができる

Clone作業(リポジトリをコピー)

Cloneとは・・・GitHub上のリポジトリをコピーすること。(チームで共同開発するときなどに使用)
Git KrakenでのClone方法
まずGitHub上のcloneしたいリポジトリの<code>タブから「clone or download」ボタンをクリック
HTTPSのURLかSSHのURLをコピー(Use SSHリンクで切り替え可能)
Git KrakenのFileメニューから「clone repo」を選択
Clone With URLから、先ほどコピーしたHTTPSのURLを貼り付け➡cloneする

Pull作業(変更の取り込み)

Pullとは・・・GitHub(リモートリポジトリ)上の変更を取り込むこと(共同開発で使う機能)
Git KrakenでのPull方法
画面上部のPullボタンクリック
Pullボタン右側の▼ボタンでPullの仕方を選べる(通常はfast forward possible=可能であれば1つ先に進める)

Pullリクエスト(変更の取り込み依頼)

共同開発時に、自分のソースコードの変更内容が他者の開発に影響を与えないために、ソースの変更内容の確認&マージ依頼のこと。(自分では勝手にマージしない)
Git KrakenでのPullリクエスト
エクスプローラーのREMOTEグループの中から、Pullリクエストを送りたいブランチを右クリック
「Start a pull request to ~」をクリック
GitHubを選択
Branch(マージ申請をする自分のブランチを選択)➡Branch(マージして欲しいブランチを選択)
Title・・・Pullリクエストのタイトル
Discription・・・Pullリクエストの詳細
Reviewers・・・このPullリクエストをチェックしてほしい相手(リモートリポジトリに招待している必要あり)
Assignees・・・このPullリクエストに対応してくれる相手
Create Pull Requestボタンクリック

GitHubで確認

Pull Requetsタブにリクエストが表示される
Reviewerがリクエストの内容を確認(Git Krakenのエクスプローラ「PULL REQUESTS」でも確認できる
レビューした内容に訂正があれば、GitHubのPull Requests上でコメントのやりとりができる。
コードの修正が終われば責任者がマージする。
GitHub Pull Requests上で「This Branch has no conflicts with the base branch」からMerge pull requestボタンよりマージの種類を選択しボタンクリック
Create a merge commit・・・通常のマージ(デフォルト)
Squash and merge・・・スカッシュでのマージ(複数のコミットをまとめる方法)
Rebase and merge・・・ブランチを吸収してのマージ
メッセージを入れ「Confirm merge」ボタンクリック➡Pullリクエストの処理が完了
Pullリクエストの処理が完了後、Git Krakenで処理の通ったPullリクエストのブランチをPullして最新の状態にする

GitHub Flow

masterブランチに対してtopicブランチを作って運用
topicブランチ・・・機能1つにつきブランチひとつを作っていく
topicブランチのマージは自身では行わず、必ずreviewerか責任者に確認してもらって修正しマージしてもらう
マージが完了したらデプロイ
デプロイ後masterブランチにマージ

1人や少人数で開発していると、毎回pullリクエストするのは面倒
通常は、チームで開発ルールを決めておくこと。

複数のリモートリポジトリと接続
例:)GitHub以外のリモートリポジトリサービスや複数の開発プロジェクトに接続するようなケース
Git Krakenでの操作方法
エクスプローラー上 REMOTEの+(Add remote)からリポジトリを追加する
複数のリポジトリを切り替えるには(希望のリポジトリにpushするには)
エクスプローラーからpushするブランチを選択し、右ックリック「Set upstream」を選択
上部に表示されたメッセージ部分でpull先のリポジトリを選択し、submitボタンクリック

他のGitHubリポジトリを自分のプロジェクトに取り込む
例)Bootstrapの取り込み https://getbootstrap.com/
GitKrakenのサブモジュールとして読み込む
GitHubのBootstrapページ(https://github.com/twbs/bootstrap)からclone用のURLをコピーする
GitKrakenのエクスプローラーパネルのSUBMODULESの+ボタンクリック
Remote URLの欄にコピーしてきたURL(もしくはSSH URL)を貼り付け
PATHの部分は自動で入る
Add SubmoduleボタンクリックでBootstrapのリポジトリが取り込める
取り込んだリポジトリは、自分が開いていたリポジトリの「子要素」として使用できるようになる

コンフリクト

コンフリクト・・・衝突の意味。複数のブランチで同じファイルの同じような場所に変更を加えた場合や、リモートとローカルで同じような変更をした場合にも起こる
Mergeするときにコンフリクトが発生した場合 GitKrakenでは「Merge Failed」と表示される
どういうコンフリクトが起こったかを確認する場合
ログメニューのコンフリクトメッセージをクリック(もしくは右側メッセージのView conflictボタンをクリック)
どのファイルでコンフリクトが起こっているか表示されるのでファイル名をクリック
diffツール画面に入る
この画面で、コンフリクトが起こったファイルのどちらが正しい変更だったのかを見極める
正しい変更に☑を入れ、Saveボタンを押すことで、コンフリクトした(間違った方のファイル)変更はなかったことになる。(両方正しかった場合は、両方に☑を入れることも出来る)
通常画面に戻り、コミットすればコンフリクトが解決される。

さいごに

あくまで自分用のまとめですが、会社のルールに乗っ取ってGit運用することが大切なようです。Gitによるソースコードの管理状態をGit Hubで公開することで、エンジニアとしての信用度が上がり、仕事につながるケースもあるとのこと。常に”人に見せられる”コードを意識してプログラミングしていきたいものですね。

私はまずは、Gitを正しく使えるようになりたいと思います。

おすすめの記事
➡「GitをGUIで操作するGit Krakenが優秀だった【初心者におすすめ】

タグ

カテゴリー

  • この記事を書いた人
アバター

from-age35

中小企業非エンジニアです。35歳で急遽プログラミングを覚えることになり、PythonやJavaScriptなどをゆっくりマイペースに覚えています。先端スキルには疎いですが、楽しくコーディングしてます♪最近の興味は【WEB開発】です

-Programming
-

Copyright© 35からのプログラミング , 2019 All Rights Reserved Powered by AFFINGER5.