はじめに
こんにちは!
今更感もありますが、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
コンクリフトが発生した場合
マージなどで失敗するとどのファイルでコンクリフトが発生したか分かります。その後は次のような操作を行う必要があります。
- ソースコードでコンフリクト箇所を修正する
git add 修正したファイル
- マージやチェリーピック(後述)を完了
完了させるには以下のコマンドを実施
git commit # merge の場合 git cherry-pick --continue # cherry-pick の場合
中断する場合は以下を実施
git merge --abort git cherry-pick --abort
取り込むかつマージ
git fetch
と git merge
を合わせて実行
git pull
指定したコミットだけ取り込む
以下で即取り込みかつコミットが行われる
git cherry-pick コミットID
複数コミットの場合
git cherry-pick id1 id2 id3
連続した範囲のコミットの場合
git cherry-pick id1..id3
おわりに
今回はGitの基礎操作から、実際に役立つTIPSまでを一通りまとめてご紹介しました。コマンドを忘れてしまったときや、作業中に「あれどうやるんだっけ?」となった際のリファレンスとしても活用いただければ嬉しいです。
最後まで読んでいただき、ありがとうございました。
コメント