Gitはいわずと知れたバージョン管理ツールですが、非エンジニアにとってはなかなか概念が掴みづらく理解が難しいかと思います。それでも、学習するだけの価値はあると考えています。私もexcelファイルを管理するとき、ファイル名20190505.xlsx、ファイル名最新版.xlsxなど、どれが最新のファイルかわからなくなったりファイルの検索に時間がかかったりしていました。そういった問題点を解決してくれる上、修正間違いを機械的に発見できたりファイルの共有が簡単にできたりと夢のようなツールです。今回はよく使うのにすぐに忘れてしまうgitコマンドについてまとめてみました。
ローカルリポジトリ操作
ローカルリポジトリの作成
Gitで管理を始める際に使うコマンドです。コマンドを入力した場所でリポジトリが作成されてしまうので、プロジェクトのルートディレクトリで実行が必要です。
$ git init
ファイルの変更箇所を確認
$ git diff
ローカルリポジトリへファイル変更の登録
このコマンドだけではリポジトリにはデータが保存されません。変更情報のみを登録するだけのコマンドです。変更する前の前舞台に上げるという意味でステージングエリアに上げるとも言います。
$ git add ファイル名
以下のコマンドを使うと、全ての変更を一度にステージングすることができます。
$ git add .
ステージングエリアから外す
git add でステージングしたデータを取り消します。
$ git rm --cached ファイル名
変更登録情報の確認
どのファイルがステージングされているか確認することができます。
$ git status
ローカルリポジトリにデータを保存
コミットといいます。コメントは必ず必要なため、オプションでつけておくとスムーズです。
$ git commit -m "コメント"
直前のコミットの取り消し
$ git reset --hard HEAD^
コミットの取り消し(作業コミットは残した状態で打ち消しコミットを生成)
$ git revert コミットのハッシュ
コミットしていない作業中のデータを一旦退避する
作業途中でbranchを切り替えたくなったけど、現状のデータをコミットしたくない。そんな時に使えるコマンドです。
$ git stash
stashしたデータの一覧を表示
$ git stash list
stashして退避したデータをもとに戻す
$ git stash apply stash@{0}
複数コミットをまとめる
コミットを重ねていると、無駄なコミットが発生し履歴がごちゃごちゃになってしまいます。後から見た時にコミット履歴を追いやすいように、コミットをわかりやすい単位にまとめておく必要があります。
$ git rebase -i HEAD~4(最新コミットからのコミット数)
上記コマンドを入力すると、vimが立ち上がりどのようにコミットを修正するか指定します。
- pick そのままコミットを残す
- squash 前のコミットにマージする、メッセージなどの編集可能
- fixup 前のコミットにマージする、メッセージはマージされるコミットのコメントを使用
コミット履歴を確認
コミット履歴を確認することができます。各コミットにはハッシュ(commit 98f9f3db2b75d1…)がついておりどのコミットか判別が容易になっています。
$ git init
1コミット、1行で表示。
$ git log --oneline
ビジュアルでコミットログを見やすく
$ git log --oneline --graph
ブランチ操作
gitには複数人で作業しやすいようにブランチという機能が存在します。
現在のブランチを確認
$ git branch
新規ブランチを作成
$ git checkout -b ブランチ名
ブランチを切り替え
$ git checkout ブランチ名
ブランチを最新のコミットの状態に戻す(作業中のデータは削除される)
$ git checkout .
リモートリポジトリ操作(github)
githubからリポジトリをコピーする
githubに公開されているリポジトリをローカルPCにコピーします。これをクローンと言います。
クローンする際httpsとsshがありますが、httpsを選択するとリモートリポジトリにアクセスする際、毎回IDとパスワードを入力する必要があるためできればsshでのクローンをおすすめします。
$ git clone GithubのURL
登録されているリモートリポジトリ一覧を表示
$ git remote
クローンしたリポジトリを最新の状態にする
リモートリポジトリは他の人も作業しているので、常に更新されています。そのためクローンしてきたリポジトリも更新が必要になります。
$ git pull origin master(ブランチ名)
ローカルリポジトリの内容をリモートリポジトリに反映させる
$ git push origin master(ブランチ名)
他人が作業しmasterにマージしたコミットを自分の作業ブランチに時系列順に取り込む
$ git rebase master(ブランチ名)
コメント