QiitaとかZennとか見ていると、アウトプットが大事だという記事をよく見かける気がします。
ふと、自分を振り返るとインプットは確かによく行ってはいるものの、アウトプットってほとんどしている覚えがないんですよね…。
今後は極力、インプットだけじゃなくアウトプットも意識して行っていきたいと思い、新規カテゴリーの追加と記事を書こうと思いました。(3日坊主にならないようにしたいですね)
今回のお題はタイトル通り、最近はGit操作を意識してコマンドで行っているという話です。
なぜ、今更Git操作をコマンドでやりはじめたか
思いつく限り、理由は3つあります。
- TortoiseGitが使えない、Git操作はコマンドのみを許容されたプロジェクトに入ることになったら
- Windows11からフォルダ操作の右クリックの挙動が変わったため(Shift + 右クリックで以前と同じ挙動になりますが、忘れがち)
- なんかコマンド操作でできたほうが単純にかっこいいから
以上の理由から個人開発で作ってみたものとかに対してGitHubにpushする際にコマンド操作に少しずつ慣れつつ、最近ではプロジェクトでも使い始めていたりします。(不明、心配なときは日頃から使っている人に教えてもらったりしつつ)
プロジェクトでよく使っているコマンド一覧
※その他オプションとか細かいところは記載していません。
git log
コミットログが最新のものになっているかのチェックのために使ってます。(先祖返り、デグレ等防止)
コミットログ参照コマンド。最新のものになっているかの確認だけなら、git showでも良い気がしますが、そこは使い分けということで。
git status
Gitにコミットする際にどのファイルが変更されたかのチェック時に使用しています。
git branch
現在のブランチ確認のために使用しています。(エディターの右下とかに出てたりするんですけど、そこはご愛嬌)
git switch -c [ブランチ名]
ブランチ操作のコマンド。プロジェクトメンバーが使っているのを見て教えてもらいました。
ブランチの切り替え、新しいブランチ作成と切り替えを行う際に使用しています。
git pull
言わずとしれたコマンド。リモートリポジトリの変更を取り込む際に使用しています。
git add -A
git statusでどのファイルが変更されたか確認してから使用しています。-Aを付けることで全ての変更を含んでいます。
git add [filename]で個別に追加もできるの時と場合によって使い分けといった感じですかね。
git commit -m [コミットメッセージ]
git addした後にインデックスに追加されたファイルをコミットするために使用しています。
基本コミットメッセージもいれるため、-mのオプション付き。
git push origin [ブランチ名]
コミットした後に、変更を反映するために使用しています。
originについては、設定で不要にする方法もあったりしますが、割愛。
稀に使っているコマンド
git checkout [ブランチ名]
git switchでブランチ切り替えもできるので、コマンド操作やり始めた頃は使っていましたけど、最近は使ってません。
コンフリクトしたときに使ったりするっぽい?(最近はコンフリクトと無縁のため、また体験したときにでも。)
git init
個人開発とかで自分のリポジトリを作ったりする際に使ったりしますが、プロジェクトとかだと新規リポジトリとか切ること少ないのであんまり使ってないですね。
git stash
この前教えてもらいました。現在の状態を保存するもので、ちょっとブランチ切り替えて確認したいときとかに便利そうな印象!
git stash pop
最新の保存状態を復元するコマンド、git stashとセットかなーと。
TortoiseGitについて
上記Gitコマンドで操作していることもあり、TortoiseGitはもう使っていないのかって言うと、ちょくちょく使ってたりします。
cloneしたり、差分比較で確認したいとき、Gitコマンドで操作するには不安なコマンド(慣れていないなど)のときとかですかね。やっぱGit操作ってミスると怖いというイメージは中々拭えないので、慎重になってしまう。
機会があれば、これからもちょくちょく調べながらコマンドで実施しようと思うので、追々ということで。
あとがき
Gitコマンドについてはいろんな人が詳しく解説してくれているページがあるので、困ったときに調べてみると割とすぐに答えに繋がるのは非常に嬉しいです。
あとは大体のエディターってターミナルついてたりするので、慣れてくるとTortoiseGit使うよりコマンドのほうが時短にもなったりするかなーって思ってたりしますので目指すは全てコマンド操作で完結できるようにすることですかね~。