[git] 基本操作(clone、add、commit、pushなど)を覚えて、開発出来るようになる
こんにちは、@yoheiMuneです。
今回の記事のゴールは、gitの基本操作を説明して、なんちゃってgitを使えるようになることです。 自分はこれらの操作だけで、とりあえずgitを半年くらい使ってました。本当は今後のブログで紹介するブランチを使うと良さげなのですが、 今回する機能があればとりあえずgitは使えます!
では、さっそく始まりますー。
基本操作として、以下の内容を説明します。
それでははりきっていきましょー!
Githubの自分のレポジトリを表示してみましょう(例:github.com/yoheiMune3/study)。
そうすると、画面右下の方に「HTTPS clone URL」というのがあるので、それをコピります。 続いて、ターミナルやコマンドプロンプトを開いて、リモートレポジトリをクローンしてくる場所まで移動します(以下の例では、~/gitで作業します)
では、ファイルを編集してみましょう。好みのテキストエディタでREADME.mdを編集します。
手順としては、「1. git addでファイルをstagedという状態にする」、「2. git commitでローカルレポジトリにコミットする」となります。 SVNと違う点は、既に存在するファイルを編集した場合にも、git addというコマンドが必要という点です。gitのaddやcommitなどでファイルの状態が変化するのです。
この点について詳しくは、以下のサイトを参照してみてください。
- 2.2 Git の基本 - 変更内容のリポジトリへの記録 | git-scm.com
これでローカルレポジトリに対して変更をコミットすることが出来ました。
なお、以下のようにaddとcommitを一緒にすることもできます。
README.mdの内容とか、コミットコメントとかが反映されたことが確認出来ます。
なお、pushするたびにユーザー名やパスワードの入力を求められて困るという方は、 先日のブログで紹介したパスワードをキャッシュする設定を行うと、今後の開発が楽になります=*^-^*=
2014.01.27追記
@sessan60jpからsshやgitプロトコルの方が楽っていうアドバイスを頂きました。確かにそっちの方が楽ですよね。設定方法は、 ターミナルからgithubのリポジトリにアクセスする設定(sshの設定) | Qiitaを参照してみてください。ありがとうございます!
以下のように行います。
これでリモートレポジトリの変更内容を、ローカルに取得することが出来ました。
なお、ファイル編集の時に紹介した「git commit -a」のオプションは、新規ファイル分は追加してくれないので、新規ファイルを追加する場合にはちゃんと「git add」する必要があります。
なお、git rmではなくて、Finderやエクスプローラー上から削除しちゃった場合には、gitでも削除コマンドを行う必要があります。
これでファイルの削除が出来ました。
現在のローカルレポジトリの内容を調べるには、以下のコマンドを使います。
上記のように、ステータスを確認して、ローカルレポジトリの現在の状況を確認出来ます。
自分は頻繁に確認することが多いので、出力される結果も含めて理解すると、gitがより使いやすくなるのではと思いました。
それらを使いこなせるようになると、きっと、さらに良いgit生活が出来るはずです。
最後までご覧頂きましてありがとうございました。
今回の記事のゴールは、gitの基本操作を説明して、なんちゃってgitを使えるようになることです。 自分はこれらの操作だけで、とりあえずgitを半年くらい使ってました。本当は今後のブログで紹介するブランチを使うと良さげなのですが、 今回する機能があればとりあえずgitは使えます!
では、さっそく始まりますー。
今回の内容
このブログのゴールは、gitの基本操作の習得です。 先日のブログでは、Gitの環境設定と、Githubにレポジトリ作成を行いました。 今回は、その作成したレポジトリを使いたいと思います。基本操作として、以下の内容を説明します。
- clone:Github上のレポジトリをローカルにクローンする
- レポジトリの中身を見る、編集してみる
- add,commit:ローカルレポジトリに変更をコミットする
- push:ローカルレポジトリの変更内容をリモートレポジトリに反映する
- pull:リモートレポジトリの変更内容を取込む
- add:ファイルを追加する
- rm:ファイルを削除する
- status:ローカルレポジトリの状態を確認する
それでははりきっていきましょー!
clone:Github上のレポジトリをローカルにcloneする
まずはGithubからレポジトリをクローンして、ローカルレポジトリを作成します。Githubの自分のレポジトリを表示してみましょう(例:github.com/yoheiMune3/study)。
そうすると、画面右下の方に「HTTPS clone URL」というのがあるので、それをコピります。 続いて、ターミナルやコマンドプロンプトを開いて、リモートレポジトリをクローンしてくる場所まで移動します(以下の例では、~/gitで作業します)
$ cd ~/gitそして、クローンです。gitのcloneコマンドを使います。簡単ですね。
$ git clone https://github.com/yoheiMune3/study Cloning into 'study'... remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done.クローンが完成すると、現在のディレクトリにクローンしたレポジトリが表示されます。
$ ls study # cloneしてきたレポジトリこれで自分のPCにローカルレポジトリが出来ました。
レポジトリの中身を見る、編集してみる
続いてレポジトリの中身を見て、編集してみましょう。上記のレポジトリ(study)を説明に使います。 まずはstudyディレクトリの中に入ります。$ cd study $ pwd /User/munesadayohei/git/study # ここがレポジトリルートですこの場所がレポジトリのルートディレクトリです。ルートディレクトリやそれ以下のディレクトリでgitコマンドを使うことで、様々なgitの操作を行うことができます。
では、ファイルを編集してみましょう。好みのテキストエディタでREADME.mdを編集します。
study ===== this is a repository for study. 追加してみた #ここを追加しました以上のように、レポジトリの中身を見る、ファイルを編集することは、gitではないいつもの操作でできます。
add,commit:ローカルレポジトリに変更をコミットする
では、上記で編集したファイルをローカルレポジトリにコミットしましょう。コミットするためには、以下のように行います。$ git add README.md $ git commit -m "初めてコミットしてみた" [master 62b90f4] 初めてコミットしてみた 1 file changed, 3 insertions(+)コミットが無事にできた場合、1ファイルchanged、3行追加(+)と表示されて、変更内容が表示されます。
手順としては、「1. git addでファイルをstagedという状態にする」、「2. git commitでローカルレポジトリにコミットする」となります。 SVNと違う点は、既に存在するファイルを編集した場合にも、git addというコマンドが必要という点です。gitのaddやcommitなどでファイルの状態が変化するのです。
この点について詳しくは、以下のサイトを参照してみてください。
- 2.2 Git の基本 - 変更内容のリポジトリへの記録 | git-scm.com
これでローカルレポジトリに対して変更をコミットすることが出来ました。
なお、以下のようにaddとcommitを一緒にすることもできます。
$ git commit -am "-aオプションを付けるとaddとcommitを一緒にできる"さらに、複数ファイルを一括して、addやコミットしたい場合には、アスタリスクでファイル名を指定することができます。
$ git add *.js $ git commit -m "jsファイルだけを対象に出来ます"
push:ローカルレポジトリの変更内容をリモートレポジトリに反映する
ローカルレポジトリの変更内容をリモートレポジトリに伝えるためには、以下のように行います。$ git pushpushすることで、ローカルレポジトリの内容をリモートへ反映することが出来ます。実際に反映されたかは、Githubのページを見ると分かります。
README.mdの内容とか、コミットコメントとかが反映されたことが確認出来ます。
なお、pushするたびにユーザー名やパスワードの入力を求められて困るという方は、 先日のブログで紹介したパスワードをキャッシュする設定を行うと、今後の開発が楽になります=*^-^*=
2014.01.27追記
@sessan60jpからsshやgitプロトコルの方が楽っていうアドバイスを頂きました。確かにそっちの方が楽ですよね。設定方法は、 ターミナルからgithubのリポジトリにアクセスする設定(sshの設定) | Qiitaを参照してみてください。ありがとうございます!
pull:リモートレポジトリの変更内容を取込む
続いてリモートレポジトリに他の人がコミットした内容を、ローカルレポジトリに反映する方法です。 1人で開発するならあまり必要ないですが、とはいってもgitで開発するなら必須コマンドです。以下のように行います。
$ git pull remote: Counting objects: 5, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 3 (delta 1) Unpacking objects: 100% (3/3), done. From https://github.com/yoheiMune3/study b6cc634..29a874f master -> origin/master Updating b6cc634..29a874f Fast-forward README.md | 2 ++ 1 file changed, 2 insertions(+)簡単ですね。上の例では、README.mdに変更があったことが分かります。
これでリモートレポジトリの変更内容を、ローカルに取得することが出来ました。
add:ファイルを追加する
続いてファイルを追加する手順です。ファイル編集と同じ感じに行うことが出来ます。今回は、a.txtというファイルを追加してみます。$ ls -l total 16 -rw-r--r-- 1 munesadayohei staff 95 1 23 16:29 README.md -rw-r--r-- 1 munesadayohei staff 14 1 23 16:33 a.txt # 追加したファイルを追加した場合には、そのファイルはuntrackedという状態なので、track状態にしてコミットします。手順は編集と同じです。
$ git add a.txt $ git commit -m "新しくファイルを追加したよー"これでローカルレポジトリに変更が反映されました。続いてpushすることでリモートレポジトリにも追加できます。
$ git pushこれでリモートレポジトリにも追加されました。めでたしめでたし。
なお、ファイル編集の時に紹介した「git commit -a」のオプションは、新規ファイル分は追加してくれないので、新規ファイルを追加する場合にはちゃんと「git add」する必要があります。
rm:ファイルを削除する
最後にファイルを削除します。ファイルの削除は、以下のように行います。$ git rm a.txt $ git commit -m "a.txtを削除しました" $ git push「git rm」というコマンドで消せば良い感じです。
なお、git rmではなくて、Finderやエクスプローラー上から削除しちゃった場合には、gitでも削除コマンドを行う必要があります。
$ git rm a.txt $ git commit -m "a.txtを削除しました" $ git push
これでファイルの削除が出来ました。
status:ローカルレポジトリの状態を確認する
ここでは、ファイルの追加、編集、削除とかとかをした時に、現在レポジトリの状況はどうなっているのかを調べる方法を書きます。現在のローカルレポジトリの内容を調べるには、以下のコマンドを使います。
$ git statusこれで表示される内容を見ることで、現在のレポジトリの内容を知ることが出来ます。以下ではいくつかの状況において、git statusを行った場合の例を示します。
■ローカルレポジトリの変更分が全てリモートレポジトリに反映されている
変更は何もないことが分かります
$ git status # On branch master nothing to commit (working directory clean)
■編集したファイルがありaddしていない
not stagedという状態のファイルがあることが分かります。
$ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: README.md # no changes added to commit (use "git add" and/or "git commit -a")
■編集したファイルをaddした
not staged状態のファイルは無くなり、コミット待ちのファイルがあることが分かります。
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: README.md #
■ファイルをコミットする
コミットファイル待ちは無くなり、1コミット分あることが分かります。
$ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # nothing to commit (working directory clean)
■ファイルをPUSHする
最初の変更は何も無い状態にもどりました。
$ git status # On branch master nothing to commit (working directory clean)
■ファイルを新規で追加する
untrackedという状態のファイルがあることが分かります。
$ git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # b.txt nothing added to commit but untracked files present (use "git add" to track)
■git rmでファイルを削除した
commit待ちの状態で削除したファイルがあることが分かります
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: b.txt #
■ファイルシステム上でファイルを削除した
not stagedという状態でファイルが削除されていることが分かります。
$ git status # On branch master # Changes not staged for commit: # (use "git add/rm <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # deleted: b.txt # no changes added to commit (use "git add" and/or "git commit -a")
上記のように、ステータスを確認して、ローカルレポジトリの現在の状況を確認出来ます。
自分は頻繁に確認することが多いので、出力される結果も含めて理解すると、gitがより使いやすくなるのではと思いました。
最後に
以上の内容で、gitレポジトリを基本的な開発出来るようになりました。多い!って思うかもしれませんが、慣れればすごく簡単です。 ぜひ色々と使ってみてください。また紹介は出来ませんでしたが、各コマンドには様々なオプションが用意されています。それらを使いこなせるようになると、きっと、さらに良いgit生活が出来るはずです。
最後までご覧頂きましてありがとうございました。