Gitの基本コマンドとTIPS

プログラミング
この記事は約6分で読めます。
スポンサーリンク

はじめに

こんにちは!

今更感もありますが、Gitの基本操作や知っておくと便利なTIPSを備忘録を兼ねてまとめました!

AI活用もできる時代になったので特に混乱はないかと思いますが、ざっとこんな感じ感で活用できると幸いです。

TIPS

Gitリポジトリをクローンする

基本形

git clone https://github.com/user/repo.git

クローン先ディレクトリ名を指定

git clone https://github.com/user/repo.git hogehoge

履歴をさかのぼる必要がない検証用に最新コミットだけをクローン

git clone --depth=1 https://github.com/user/repo.git

不要なブランチ情報を省略して特定のブランチのみクローン

git clone -b develop --single-branch https://github.com/example/app.git

ブランチ一覧を確認する

ローカルブランチ一覧

git branch

リモートブランチ一覧

git branch -r

ローカル+リモート全て

git branch -a

ブランチを切り替える

既存ブランチへ切り替え

git checkout ブランチ名

既存ブランチから新規ブランチを作成

git checkout ブランチ名
git checkout -b 新しいブランチ名

特定のコミットIDのソースコードを確認する場合もこの方法が使える

git checkout コミットID

特定のコミットIDを元にブランチを作る

git checkout コミットID
git checkout -b 新しいブランチ名

ブランチ名の付け方について

色々ルールがあるようで実際になかったり色々あるのですが、経験上これだけは守ったほうがいいという所だけ説明します。どこかのサイトに根拠となる資料とかあった気がするのですが、URLを失念してしまったので発見したら追記します。

汎用的な名前を付けないこと

ブランチ名に階層構造の意味を持たせるために、/を付けることはよくあり、それ自体は全く問題ありません。

ただこの性質により、最後に/を付けた他のブランチを作れなくなります。例えば abc というブランチを作ってしまうと、 abc/efg というブランチが作れなくなります。

そのため多人数で作業するかつ、/を付けることを可能とするルールの場合、階層の名前の付け方までルール化した方がトラブルは少ないです。

英語は小文字をする

ブランチ名を入力する際、英語は小文字に統一するのが最も効率的で、作業者依存も起きません。

  • 大文字小文字が混在すると入力が煩雑になるし、作業者に依存する
  • 小文字統一であれば、途中まで打ってタブ補完するだけで簡単に選択できるし、作業者依存も起きない

アンダーバーとハイフンの使い分け

ワードの区切り方については、

  • 特定の名詞を表す場合 → アンダーバー(_
  • 別々の単語として意味を持たせる場合 → ハイフン(-

とするのが適切だと考えています。

アンダーバーとハイフンは見た目は似ていますが、実際には使い分けるべきです。

例えば、テキストをトリプルクリックで選択する場合、アンダーバーでつないだ単語は一括で選択されるため、1つの名詞(単語)として認識されるべき箇所に適しています。一方、ハイフンは単語の区切りを示すため、複数単語を組み合わせたブランチ名やファイル名に使うと読みやすくなります。

データを追加、コミット、プッシュ

追加

ファイル単体をステージングへ追加

git add ファイル名

ディレクトリは以下を全て追加

git add ディレクトリ名/

すべての変更をまとめて追加

git add .

特定ファイルをステージングから外す

git reset ファイル名

すべてのファイルをステージングから外す

git reset

コミット

ステージングの内容をコミット

git commit -m "コミットメッセージ"

コミットを取り消してステージングに戻す

git reset --soft HEAD

コミットを取り消して変更もステージングから外す

git reset --hard HEAD

空コミット(後述)

git commit --allow-empty -m "ブランチ作成: ログイン機能追加用"

プッシュ

構文

git push <リモート名> <ブランチ名>

初回のプッシュ(-u オプションは追跡設定)

git push -u origin ブランチ名

次回以降は追跡設定のため以下のみでよい

git push

コミット履歴を表示する

1行表示

git log --oneline

ブランチ構造をツリー表示

git log --oneline --graph

ブランチ名やタグも表示

git log --oneline --decorate

developからブランチを切りリモートにプッシュする

developからブランチを作成してリモートへプッシュ

git checkout develop
git checkout -b feature/add-function
git push -u origin feature/add-function

ブランチを作成したということに対してコメントを入れたい場合は空コミットをいれる

git checkout develop
git checkout -b feature/add-function
git commit --allow-empty -m "ブランチ作成: ログイン機能追加用"
git push -u origin feature/add-function

他のブランチの状況などを取り込む

git cloneをした状態では最新であっても情報が古くなっていく

ローカルにサーバーの情報を取り込む場合

git fetch

リモート名省略せず明示的にリモート先から取り込む

git fetch origin

他ブランチの削除情報も取り込む(ローカル内で落としておいた他ブランチ情報も削除される)

git fetch --prune

他ブランチの変更をステージングに取り込む

mergeを使用する

git merge

他ブランチを checkout している状態でdevelop内の変更履歴を最新から取り込む場合

git checkout feature/add-login
git fetch origin
git merge origin/develop

mergeはコンフリクトがない場合は、マージコミットが 自動的に作成され、即コミットされる。コミットメッセージも自動生成される

Merge branch 'develop' into feature/add-login

コンクリフトが発生した場合

マージなどで失敗するとどのファイルでコンクリフトが発生したか分かります。その後は次のような操作を行う必要があります。

  1. ソースコードでコンフリクト箇所を修正する
  2. git add 修正したファイル
  3. マージやチェリーピック(後述)を完了

完了させるには以下のコマンドを実施

git commit # merge の場合
git cherry-pick --continue # cherry-pick の場合

中断する場合は以下を実施

git merge --abort
git cherry-pick --abort

取り込むかつマージ

git fetchgit merge を合わせて実行

git pull

指定したコミットだけ取り込む

以下で即取り込みかつコミットが行われる

git cherry-pick コミットID

複数コミットの場合

git cherry-pick id1 id2 id3

連続した範囲のコミットの場合

git cherry-pick id1..id3

おわりに

今回はGitの基礎操作から、実際に役立つTIPSまでを一通りまとめてご紹介しました。コマンドを忘れてしまったときや、作業中に「あれどうやるんだっけ?」となった際のリファレンスとしても活用いただければ嬉しいです。

最後まで読んでいただき、ありがとうございました。

コメント