Gitはシステム開発する際の必須知識だと言えます。
今回はSE1年目を振り返って、初めてのプロジェクトアサイン前に知っておきたかった最低限のGitコマンドについてまとめてみました。
Gitって何?
Gitは、プログラムのコードの変更を管理するためのツールです。このようなツールを「バージョン管理システム」と呼びます。
たくさんの人が同じプロジェクトに取り組むときや、自分一人でも作業の途中経過を保存しておきたいときに役立ちます。
Gitを使うメリット
バージョンを管理できる
Gitでは、ロジェクトの全ての変更履歴が保存されます。
そしてコマンド1つで簡単に特定の時点の状態に戻ったり、いつ何が変更されたのかを追跡したりすることが可能になります。
これはコードが壊れたときや、過去のバージョンを確認したいときに非常に役立ちます。
チームでの作業が容易になる
多くの開発者が同じプロジェクトに取り組むとき、全ての人が同じコードベースで作業を行うことができます。
各開発者は自身のブランチで作業を行い、その変更を他の開発者と共有することができます。
これにより、複数の開発者が同時にプロジェクトに取り組むことが容易になります。
ローカルで作業できる
Gitは分散バージョン管理システムであるため、各開発者はローカル環境で作業することができます。
これにより、ネットワーク接続が不安定な場所やオフライン状態でも作業を行うことが可能です。
作業が完了したら、それをリモートリポジトリにプッシュして共有します。
アサイン前に最低限知っておきたいGitコマンド
status
git status
現在のGitリポジトリの状態を表示するために使用します。具体的には、現在のブランチ、変更の状態、コミットの状態を知ることができます。
どのファイルが変更されているかを知りたい時や、どのファイルをaddしたかを知りたい時などに使用します。
diff
git diff
git diff {フォルダ名}
git diff {ファイル名}
ファイルの変更内容を具体的に確認するために使用します。行単位での変更が表示されるため、具体的な変更内容を確認できます。
フォルダ名やファイル名を指定して確認することも可能です。
add
git add .
git add {フォルダ名}
git add {ファイル名}
Gitがバージョン管理を行う対象にファイルやフォルダを追加するために使用します。新しく作成したファイルや、既存のファイルに対して行われた変更をGitに認識させるために、’git add’ コマンドを使います。
フォルダ名やファイル名を指定することも可能です。
‘git add’コマンドによってファイルが追加されると、それらは「ステージングエリア」または「インデックス」と呼ばれる領域に移動します。
commit
git commit
git commit -m "メッセージ"
ステージングエリア(またはインデックス)にある変更をリポジトリに保存するために使用します。
‘-m’オプションはメッセージを付けるためのもので、ダブルクオーテーションで囲まれた文字列がコミットメッセージとなります。
push
git push origin {ブランチ名}
ローカルの変更(新規コミットなど)をリモートリポジトリに反映するために使用します。
このコマンドを使うことで、自分が行った変更を他の開発者と共有したり、リモートリポジトリでのバックアップを作成したりすることができます。
pull
git pull origin {ブランチ名}
リモートリポジトリの変更をローカルリポジトリに取り込むために使用されます。これにより、他の開発者による最新の変更を取得し、自分のローカルリポジトリを最新の状態に更新することができます。
リモートリポジトリ(通常は’origin’と名付けられる)の、指定した{ブランチ名}からの変更を取得し、現在のローカルブランチにそれらの変更をマージします。
fetch
git fetch
リモートリポジトリから情報を取得するために使用します。具体的には、リモートリポジトリの新しいブランチや既存ブランチの更新、新しいタグなどを取得します。
他の開発者が行った最新の変更を知りたいときや、リモートブランチをローカルにチェックアウトしたいときなどに使用します。
checkout
git checkout {ブランチ名}
git checkout -b {ブランチ名}
ブランチ間の切り替えや特定のコミットやファイルの状態に作業ディレクトリを切り替えるために使します。
‘git checkout {ブランチ名}’で現在のブランチから指定されたブランチに切り替えます。
‘git checkout -b {ブランチ名}’は、今のブランチの状態を保持した新しいブランチを作成し、その新しいブランチに切り替えます。
reset
git reset --soft
git reset --mixed
git reset --hard
特定の状態にプロジェクトを戻すために使用されます。具体的には、特定のコミットにヘッドをリセットしたり、ステージングエリアを特定の状態にリセットしたり、ワーキングディレクトリを特定の状態にリセットしたりすることができます。
‘–soft’オプションは、ヘッドだけを移動します。ステージングエリアとワーキングディレクトリは変更されません。
‘–mixed’オプションは、ヘッドとステージングエリアを移動します。ワーキングディレクトリは変更されません。
‘–hard’オプションは、ヘッド、ステージングエリア、ワーキングディレクトリをすべて移動します。これは破壊的な操作で、変更は元に戻すことができません。
revert
git revert {コミットID}
特定のコミットを打ち消す新しいコミットを作成するために使用します。つまり、このコマンドは既存のコミットを削除するわけではなく、そのコミットの変更を逆に適用した新しいコミットを作成します。
これは、間違ったコミットを行った時や、過去の特定のコミットが問題を引き起こした時などに使用します。また、公開されたコミットを打ち消す必要がある場合にも役立ちます。
‘git reset’が「過去に戻る」ために使用されるのに対し、’git revert’は「過去のエラーを修正する」ために使用されます。コミット履歴を改変せずに特定のコミットの影響を打ち消すことができるため、’git reset’と比較して安全です。
stash
git stash
git stash list
git stash apply
git stash pop
‘git stash’は、一時的に作業中の変更を保存し、変更前のクリーンな作業ディレクトリに戻すために使用します。
別のタスクに切り替える必要があるが、現在の作業をまだコミットしたくない場合などに非常に便利です。
‘git stash list’は、保存されたすべてのスタッシュの一覧を表示することができます。
‘git stash apply’は、最新のスタッシュをワーキングディレクトリに適用することができます。特定のスタッシュを適用したい場合は、’git stash apply stash@{n}’ とします。
‘git stash pop’は、最新のスタッシュをワーキングディレクトリに適用し、そのスタッシュを削除することができます。
まとめ
以上が初めてのプロジェクトで最低限知っておきたいGitコマンドです。
どれもよく使うので参考にしてみてください!