こんにちは
私は入社して5年間バージョン管理システムにSVNを利用してきましが
最近Gitへの移行をはじめましたので備忘録を兼ねてGit操作を記載します。
まずはGitを利用するための初期設定を行います
ユーザー情報を設定する
git config --global user.name "your name" git config --global user.email "hoge@example.com"
コミットログを書くエディタをemacsに設定する(趣味)
git config --global core.editor 'emacs'
GitLab等にssh公開鍵を登録している場合は~/.ssh/configに以下の記述をしておくと便利です
Host gitlab User git Port 指定のポート番号 HostName gitlab.example.com identityFile ~/.ssh/id_rsa → 秘密鍵のパスを記述
以上で必要最低限の初期設定が終わりましたのでワークフロー順にコマンドを記載していきます
Gitリポジトリのコピーを取得するコマンド例は以下となります。
(ssh方式前提の例)
git clone gitlab:RepositoryPath/example.git
すでにclone済みの場合は作業前にpullコマンドでリモートの変更を取得しておきます
git pull
開発作業を行いリポジトリのファイル編集が完了したらdiffコマンドで差分チェックを行います
git diff
差分確認はターミナルで行うよりもパイプでvimに渡したり、
git diff | vim -
emacsのファイルを開いた状態で C-x v = や C-x v D などでエディタで確認したほうが見やすく早いです。
変更差分に問題がなければコミットするためにaddコマンドでステージングを行います。
git add "file name"
addコマンドは*を使ったワイルドカードによる指定やオプションを付けることができます
git add *.c ← カレントディレクトリのすべての.cファイルがaddされる git add . ← カレントディレクトリ以下の、変更があったすべてのファイルがaddされる git add -A ← 変更があったすべてのファイルがaddされる git add -u ← バージョン管理されていて、変更があったすべてのファイルがaddされる
コミット前に不要なファイルがaddされていないか、add漏れがないかなどをstatusコマンドで変更内容を確認する。
git status
不要なファイルがaddされていたらresetコマンドでaddを取り消します
git reset "file name"
確認を終えましたらcommitコマンドでローカルにコミットを行います。
git commit
コマンドを打つとエディタが起動し以下のようなコミットログのファイルが開かれるので
先頭の空改行されている行からコミットログの記載を行います。
(最初から入力されている#付きのコメントは無視される)
# Please enter the commit message for your changes. Lines starting # with ‘#’ will be ignored, and an empty message aborts the commit. # # ブランチ master # Your branch is up to date with ‘origin/master’. # # コミット予定の変更点: # modified: exsample.c # # 追跡されていないファイル: # a.out #
コミットログの編集を終えたらファイルを保存しエディタを閉じるとコミットされます。
コミットが完了したら念の為logコマンドでコミットログにtypoなどないか確認しておきます。
git log
コミットログのtypoや間違えてコミットした場合もresetコマンドでコミットを取り消します。
(pushさえしていなければまだ手遅れではない)
git reset --soft HEAD^ ← 直前のコミットのみを取り消す(ローカルで編集した差分はそのまま) git reset --hard HEAD^ ← 直前のコミットをすべて取り消す(ローカルで編集した差分も消え、一つ前のリビジョンまでロールバックする)
最後にpushをしてリモートに反映をします
(例ではmasterブランチへpushします)
git push origin master
以上で基本的な初期設定からpushまでのgitのコマンドとなります。
ブランチやマージなどの操作ははまた次回といたします。