独学でプログラミングを始めると、Git はとても身につけにくい技術です。
Git はとても便利な反面、処理のフローが複雑で初学者にとって複雑怪奇。
さらに個人開発では Git なしでもどうにかなってしまうので、学習が後回しになってしまいがちです。
ところが、プログラムが大規模になると Git なしでの開発はほぼ不可能になります。
つまり、会社勤めをするなど複数人で開発するなら Git を扱えることは必須になります。
本記事では CUI を用いた Git 操作を紹介していきます。
【基本】CUI を使った Git の基本操作
まずは日常的に使うコマンドからご紹介します。
init
現在のディレクトリを新たに Git 管理下に置きたい場合のコマンドです。
mkdir my_project && cd my_project
git init
このコマンドを実行すると、.git
ディレクトリが作成されます。
これにより、現在のディレクトリのファイルやディレクトリが Git によるバージョン管理の対象になるというわけです。
clone
リモートリポジトリをローカルマシンにクローン(コピー)します。
git clone https://github.com/username/repository.git
コピーしたローカルリポジトリには、リポジトリのコミット履歴やブランチの情報も含まれることになります。
リポジトリーのURLは、リポジトリページの「Code」ボタンから確認できます。
HTTPSまたはSSHのタブをクリックして、URLを取得しましょう。
なお、GitHubでSSH接続の設定を行いたい方は次のページも参考にしてください。
status
リポジトリの現在の状態(変更内容、コミット状況など)を確認します。
git status
# On branch main
# Your branch is up to date with 'origin/main'.
# nothing to commit, working tree clean
add
作業ディレクトリでの変更をステージング(次のコミットに追加する準備)します。
ファイル全体をステージングするときは以下のようにします。
# ファイル全体を追加する場合
git add .
.
は「カレントディレクトリ下のすべて」という意味です。
また、特定のファイルだけをステージングする場合には具体的なファイル名を指定します。
# 特定のファイルを追加する場合
git add README.md
つまり、上記の例ではREADME.md
だけがステージングされることになります。
commit
ステージングされた変更をリポジトリにコミットします。
-m
オプションをつけると、一行コメントを入れることができます。
# 一行コメントを入れる
git commit -m "Add initial project files"
ただし、一般的には「1行目 = タイトル、2行目 = 空白、3行目 = 詳細」といった感じで書きます。そうすると-m
だと物足りないので、次のコマンドを実行します。
git commit
実行後に vim が立ち上がるので、以下の要領でコメントを入力していきましょう。
i
キーを押すEnter
キーを押す(Insertモードになる)- コミットメッセージを入力する
ESC
キーを押す:wq
をタイプするEnter
キーを押す
コメントの記載例をいくつか挙げておきます。
修正: ログイン時のエラーチェックが不十分だった問題を解決
ログインフォームでの入力値チェックが不足しており、特定の入力がエラーを引き起こしていました。
- ユーザ名の空文字を許可しないように修正
- パスワードの最小文字数をチェック
機能追加: ユーザープロファイルページに画像アップロード機能を実装
ユーザーが自分のプロフィール画像をアップロードできるようにするため、以下の変更を加えました。
- 画像アップロードのための新しいフォームを追加
- サーバーサイドでの画像処理ロジックを実装
- アップロードされた画像のサイズ制限を設定
更新: READMEファイルにインストール手順を追記
新しい依存関係ライブラリに対する説明を追加し、ユーザーがプロジェクトをスムーズにセットアップできるようにしました。
- Pythonのバージョン要件を明記
- 実行に必要な外部ツールのリンクを追加
push
ローカルのコミットをリモートリポジトリに送信します。
git push origin main
pull
リモートリポジトリの最新の変更をローカルに取り込みます。
git pull origin main
origin と main の意味は以下の通りです。
origin
リモートリポジトリのデフォルトの名前がorigin
です。
Git でリポジトリをクローンすると、リモートリポジトリのデフォルトのショートカットとしてorigin
が設定されます。
これにより URL を繰り返し入力する代わりにorigin
とするだけでリモートリポジトリにアクセスできるようになります。
main
リポジトリのブランチ名を指します。
Git では複数のブランチが切られることが多いので、pull
したいブランチ名を正確に指定することが必要になります。
branch
ブランチの確認や作成を行います。
# 既存のブランチ一覧を表示する場合
git branch
# 新しいブランチを作成する場合
git branch feature-branch
checkout
ブランチの切り替えや、特定のコミットに移動します。
# ブランチを切り替える場合
git checkout feature-branch
ブランチを新規作成して、新しくできたブランチに切り替える場合は以下のコマンドを使います。
git checkout -b [新しいブランチ名]
merge
別のブランチを現在のブランチにマージ(統合)します。
git checkout main
git merge feature-branch
cherry-pick
他のブランチにある特定のコミットだけを取り込みます。
git cherry-pick [commitID]
複数のコミットの取り込みや、連続したコミットの範囲指定による取り込みもできます。
別記事で詳しく解説しました。
» 参考:【すぐ分かる】チェリーピック(git cherry-pick)の使い方
log
リポジトリのコミット履歴を表示します。
git log
# ログを1行で表示する場合
git log --oneline
diff
コミット間やステージングエリアと作業ディレクトリの変更点を比較します。
# ステージングされていない変更を確認する場合
git diff
# ステージングされた変更を確認する場合
git diff --staged
ケース別コマンドの組み合わせ
ファイルを追加したり更新した場合
git add -A # 全てステージングする
git commit -m "メッセージ" #コミットする
git push origin main # プッシュする
最新のリモートリポジトリを取り込む
git pull origin main
HTTPS から SSH に変更したいとき
認証方法を HTTPS から SSH に変更する場合には、以下のコマンドを実行します。
git remote set-url origin <新しいリモートリポジトリのURL>
このコマンドが必要な理由は、HTTPS と SSH でリモートリポジトリの URL が変わるためです。
コメント