業務をしながら覚えるGit
現場のバージョン管理システムがGit以外の方や「yymmdd.zip」で管理している人を対象とします
Gitをインストール
以下のURLからGitをダウンロードします
https://git-scm.com
ダウンロードが終わったらインストールをします
全ての画面でそのままの設定で「Next」を押します
インストール完了です
gitの設定
最低限以下の設定をしないとGitが使えません
右クリックをすると「Git Bash Here」という項目が追加されているのでクリックします
「Git Bash」が起動するので以下のコマンドを入力します。(Git BashはGitを操作するツールです)
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
「"John Doe"」の部分と「johndoe@example.com」の部分は自分のものに変更してくださいメールアドレスの設定は実在しなくも問題ありません
Gitと連携させるツールの設定
エディタと差分を確認するツールを設定します
その前に以下の二つのツールをインストールしてください
- notepad++(エディタ)
- winmerge(差分確認ツール)
userフォルダを確認すると新しく「.gitconfig」というファイルができています(隠しファイルなのでフォルダオプションを変更していない場合は見えません)
これをテキストエディタで開いてみると先ほど行った設定が以下のように反映されています。
[user]
name = John Doe
email = johndoe@example.com
このファイルにさらに設定を加えます[user]
name = John Doe
email = johndoe@example.com
[core]
editor = 'C:/Program Files (x86)/Notepad++/Notepad++.exe' -multiInst
[diff]
tool = WinMerge
[difftool "WinMerge"]
path = C:/Program Files/WinMerge/WinMergeU.exe
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -e -u -r -wl \"$LOCAL\" \"$REMOTE\"
[merge]
tool = WinMerge
[mergetool "WinMerge"]
path = C:/Program Files/WinMerge/WinMergeU.exe
cmd = \"C:/Program Files/WinMerge/WinMergeU.exe\" -e -u \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
これで連携ツールの設定は完了です
Gitを使ってバージョン管理をする
具体的にGitを使っていきます
例として以下のようなフォルダ構成でおこないますが、仕事で開発しているソースがあればそちらをGitで管理してみましょう
- img
- logo.png
- index.html
- content.html
そのフォルダで右クリックして「Git Bash Here」を選択します
Git Bashが起動したら以下のコマンドを打ちます
git init
コマンドが実行されるとフォルダ内に「.git」というフォルダが作成されます(隠しフォルダです)この「.git」というフォルダの中に管理に必要な情報から、登録したソースコードの情報まですべて含まれるので消さないようにしてください
ファイルをGitの管理下に入れる
まずは.gitフォルダのある場所で右クリックをしてメニューから「Git Bash Here」選択します(git init等の操作でGit Bashを閉じていなければこの操作はいりません)
最初は管理対象とするファイルをGitに登録します
以下のコマンドを入力してください
git add -i
選択肢が以下のように出ます1:status 2:update 3:revert 4:add untracked
5:patsh 6:diff 7:quit 8:help
管理対象になっていないファイルの追加は「add untracked」なので4を選択します4
.gitフォルダとそれ以下の階層の登録されてないファイルの一覧が出てくるのでgitで管理したいファイルを選択しますサンプルでは以下のように表示されます
1:content.html
2:img/logo.png
3:index.html
全てのファイルを管理したいので以下のように入力しました1-3
※1,2,3と入力しても同様の選択になります何も入力せずにEnterを入力すると選択肢にもどります
1:status 2:update 3:revert 4:add untracked
5:patsh 6:diff 7:quit 8:help
7を選んで追加作業を終了します7
その次は以下を入力します
git commit
このコマンドで先ほどの「git add」で選択したファイルを記録しますエディタが起動されるのでコメントを入力してみましょう
このコメントが履歴として表示されます
今回は何もないところに新規でファイルしたので「新規ファイル追加」と入力しておくことにします
もちろんみなさんは任意のコメントで構わないですがコメントなしはできないので何かしらは入力してください
※ここでエディタが開かない人はエディタのパスが間違っている可能性があるので「.gitconfig」内の「editor =」部分のパスを確認してください。
(program files内をパスとして指定する際はパスにスペースが入ることになるので「 ' 」で囲む必要があります)
保存して、エディタを閉じたら記録完了です
ファイルを更新する
次はファイルの更新です
追加機能を実装したり修正が完了したり、作業がひと段落したらその状態を記録してみましょう
サンプルでは「index.html」内の「Hello World」という文字列を「こんにちは、世界」と変更してみました
Git Bashを開いていない人はそのプロジェクトの「.git」フォルダのある階層で右クリックをして「Git Bash Here」を選択してください
Git Bashが起動したら以下ファイルの変更箇所の確認をするために以下のコマンドを入力します
git difftool
変更したファイル名とそれをWinMergeで起動するかを確認されますViewing(1/1) 'index.html'
Launch 'WinMerge'[Y/n]?
確認するので「y」を入力します
y
入力後WinMergeが起動してファイルの差分が表示されます問題なければそのまま×ボタンを押してWinMergeを閉じて終了します
他のファイルも同様に聞かれるので必要であれば確認します
変更した部分が確認できたら変更ファイルを記録するためにファイルを選択します
以下のコマンドを入力します
git add -i
ファイルを追加したときにも入力したコマンドです同様の選択肢がでるので「update」の2を選択します
2
すると、内容を変更したファイルの一覧が表示されるはずです1: unchanged +1-1 index.html
このindex.htmlの変更を記録したいので、以下を入力しました1
皆さんは変更したファイルが複数あると思うのでそちらも選択してください何もしないで「Enter」を入力すると選択肢に戻るので「7」を選択して終了します
更新するファイルの追加作業が終わったら、以下のコマンドを入力します
git commit
ファイルをGitの管理に入れたときと同様にコメントを入力するためにeditorが開くのでコメントを入力します変更に関する事柄を入力して保存してエディタ終了します
サンプルでは「Hello Worldの修正」と入力しました
これでGitでのソース管理の一連の流れは終了です
履歴を確認する
履歴を確認してみます
以下のコマンドを入力します(「git」ではなく「gitk」であることに注意してください)
gitk --all
グラフィカルに履歴をみることができます
まとめ
このようにソースファイルの変更履歴を作って管理していきます
最後に大事なコマンドと用語、そしてその役割をまとめておきます
-
管理情報が入る「.git」フォルダを作成しますgit init
これがないと始まりません
-
管理対象にしたり更新したりするファイルを指定しますgit add -i
これを「ステージング」というので覚えておいてください
もし間違えたファイルを対象にしてしまった場合は「3:revert」からファイルを選択してください
指定状態を解除できます
-
「git add 」したファイルを実際に記録として残しますgit commit
これを「コミット」というので覚えておいてください
コミットは後で一つにまとめたり、修正することも可能なのでこまめにしましょう
-
グラフィカルに履歴を確認できますgitk --all
コミット時のコメントや変更部分で検索もできるので必要なときは何回でもみましょう
-
未紹介のコマンドですgit status
このコマンドでは現在のファイル状態がわかります
ステージングされているファイル、最終コミットと差分があるファイル、まだgitに管理されていないファイルが表示されます
管理ファイルが多いとどれがステージングされてどれがされていないのかなど忘れがちなのでこまめに確認しましょう
-
未紹介のコマンドですgit checkout コミット番号
gitで管理されているファイルをすべて指定したコミットの状態にします
もし実装や修正途中で編集途中のファイルがある状態でうっかりチェックアウトしてしまっても失敗します
前回コミットとの差分がない状態でないとチェックアウトはできないので現在変更してある分を「git commit」で一度コミットするか「git checkout -f」で最終コミットの状態に戻す必要があります
コミット番号は「gitk --all」でも表示されます
gitにはブランチといった便利な仕組みもあるのですがそれを説明すると混乱するのでひとまずはここまで紹介したコマンドでGitを使ってみてください