前日の記事はariakiさんの「古のPHP5.6プロジェクトをdeployerでデプロイする」でした。
はじめに
みなさん「Git」の操作は「CUI」ですか?「GUI」ですか?
私のGitの使い始めは「コマンドの意味を理解する」のが大事と考え、「CUI」操作だったのですが、
ある程度理解してきて最近は「Fork」というGitクライアント(GUI)を併用しています。
「差分、ツリー、ブランチ一覧」などはこっちが見やすいからです。
また、なぜ併用しているかというと「Fork」の使い方を一部しか知らないからです。
そのためこの記事を通して自分自身「Fork」の使い方を知っていきたいと思います。
Forkについて
上記にも記載しましたが、Git クライアントツールです。
インストールについてはこちらから行います。
https://fork.dev/
Mac、Windowsと分かれているためご自身の環境に合わせてダウンロードしてください。
インストールから使用するまでの詳細設定について、
わかりやすい記事がありましたのでこちらを参考していただくといいかなと思います。
https://hugo-de-blog.com/git-fork/
基本操作について
記事の前提
今回は私が普段「CUI で使用しているコマンドを Fork で使えるようにする」のが目的ため、
Gitコマンドの詳細については基本的には触れないためご承知おきください。
また各操作にはキーボードでのショートカット操作もあったりするので、
興味があれば実際に使って探してみてください。
Gitコマンドの詳細が知りたい方は以下の動画がおすすめです!
https://www.youtube.com/watch?v=7_JtLzI9iqE&t=605s
弊社メンバーが実務でよく使うコマンドからたまに使うコマンドまで丁寧に説明しています。
ブランチ作成
※master
やmain
ブランチがある前提です。
- 派生元となるブランチへ移動します
a. 移動したいブランチをダブルクリック or 右クリック→「Checkout 'ブランチ名
'」で移動できます。
b. 今回はdevelop
ブランチを派生元とします。 - 右クリック→「New Branch」をクリックします。
- 作成したいブランチ名を入力し「Create and Checkout」をクリックで新しいブランチが作成されます。
「Check out after create」にチェックを入れておくことで、作成したブランチへ移動してくれます。
add
Fork ではadd
する前は「Unstaged」した後は「Staged」へファイルが移動します。
commit
コミットするファイルを「Stage(add)」したら画面右下にコミットメッセージ、説明文(必要に応じて)を入力したら青い「Commit 2 Files」ボタンを押下でコミット完了です。
push
-
push
したいブランチに移動します。 - 画面中央上部に「Push」があるのでそれをクリックすると
push
に関する情報を選択できます。
通常はそのままでOKです。
push
先のリモートブランチも自動で選択先としてくれています。
※例えばrebase
行ってコミットIDが変わっていたりする場合は「Force push」にチェックをする必要があります。
fetch
画面中央上部にある「Fetch」ボタンを押下
自動で「Fetch」してくれる設定もありますのでしておくと楽です。
pull
例:リモートのdevelop
ブランチの内容をローカルのdevelop
ブランチにpull
する
stash
1.stash したいファイルを選択して画面中央上部の「Stash」をクリックします。
2. 必要であればメッセージを入力し「Save Stash」をクリックします。
3.「stash」した内容は左側の「Stashes」で確認でき、目的の箇所をクリックすると編集していたファイルや内容を確認できます。右クリックから削除することもできます。
4.stash した内容を戻したい場合は対象の箇所を右クリック→「Apply メッセージ名」 をクリックします。
5.「Apply」押下で「stash」していた内容を戻すことができます。
(stashしていた内容は削除されます、残すこともできます)
差分の確認方法
画面左上の「Local Changes」をクリックすると画面中央に修正・新規作成したファイル、右側には修正差分が表示されます。
merge
rebase
rebase
でできることは多くありますが、
ここでは私がよく使う以下2つについて紹介します
(他気になる方は調べてみてください)
複数コミットをまとめる
-
まとめたいコミットの一つ前の行を選択して「Interactively Rebase '対象ブランチ名' to Here...」をクリックします。
今回はa
ブランチの赤枠のコミット1、2、3を一つにまとめます
-
コミット1に対して2、3をまとめたいので2、3の行を「Pick→Squash」のように変更し、右下の「Rebase」をクリックします。
※コミットメッセージを変更したい場合は「Rebase」をクリックする前に「Reword」をクリックして変更することができます。
ブランチの派生元を変更し上流の更新を取り込む(派生元を変更する)
ここでは開発中のy
ブランチの派生元をdevelop
ブランチに変更し、develop
ブランチにコミットされている変更分を y
ブランチにも取り込みたいとします
(x
ブランチでコミットされた「hoge関数作成」)
操作としてはmerge
と同じです。
y
ブランチをdevelop
ブランチでrebase
したいので、
revert
ここでは「hoge関数の文言修正」のコミットに対して行います。
reset(--soft, --mixed, hard)
コンフリクトの解消方法
merge
やrebase
ではコンフリクトが発生することがあります。
今回は例としてz
ブランチをdevelop
ブランチにマージ、
コンフリクトを発生させそれを解消してみます。
develop
ブランチとz
ブランチがコンフリクトする状態を作っています。
(ソースコードは割愛します)
-
「The merge will require manual resolution」とありますが、そのまま進めて右下の「Merge」をクリックします。
(直訳するとマージは手動で解決する必要がある)
-
コンフリクトしているので、コンフリクトを解消してからコミットしてください、といった内容が表示されます。
コンフリクトをなかったことにしたい場合は画面右上の「Abort」をクリックし、コンフリクト前の状態に戻します。
-
どちらか片方の取り込みで問題なければチェックボックスのチェックを外すことで、
チェックがついている方の状態を反映することになります。
以下はz
ブランチのチェックを外して見た状態で、develop
ブランチの状態を反映する状態です。
-
今回はどちらの状態も取り込みたいので、「Merge in Fork」をクリックし修正を行います。
修正が完了したら、画面右下の「Resolve」をクリックして決定します。
-
add
された状態になるので適宜メッセージを変更してコミットボタンを押せば完了です。
develop
ブランチにz
ブランチがマージされました。
。tw
cherry-pick
c
ブランチに対してb
ブランチの「phpでhoge」というコミットを取り込むとします。
c
ブランチに「phpでhoge」のコミットを取り込むことができました。
(コンフリクトした場合は解消することが必要です)
まとめ
今回の普段使っているコマンドを「Fork」で行う方法を紹介しましたが、
「Fork」の機能としてはほんの一部にしかすぎないと思うので便利な操作を見つけたらまた紹介できればと思います。
また機能を紹介するにあたり、
当然Gitの理解が必要になるため改めて勉強できて良い機会となりました。
明日は @tkek321 さんの最低限これだけおさえる DB インデックスです。
参考サイト・本