こんにちは。きんくまです。
いままでgitを個人的に使っていて、add、commit、ブランチ切るぐらいはできたんですが、実際のところ細かく修正したり、やり直したり、リモートリポジトリが絡んでくるとダメダメな感じでして。
それで最近、gitの目的のひとつである、他の人とソースコードを共有してやりとりすることが増えてきました。
ただ、pullしたときの挙動とかpushは本当にこれでいいのかが、いまひとつあやふやな理解でやっている感じがしてまして、、。
それで、この記事ではそれを解消するために、自分の端末にリモートリポジトリを作って、pullとかの練習してみよう!というものです。
リモートリポジトリを作る
まずは、リモートリポジトリを作りましょう。新規フォルダに適当な名前をつけます。
ここでは、remoteとしました。
ターミナルから、このディレクトリに移動したあとに次のコマンドを打ちます。
git init --bare
おめでとうございます!これでリモートリポジトリの完成ですw
というわけで、ここからは、同じプロジェクトに入ったAさんとBさんという役を一人で演じてみます。
Aさん役
Aさんは最初にリモートリポジトリにコミットする人です。
personAフォルダを作って、gitを初期化して、最初のコミットまで済ませます。このへんはみなさんよくご存知だと思います。
git init echo "hello" > hello.txt git add hello.txt git commit -m "initial commit"
これをさきほどのリモートリポジトリにpushします(リモートっていっても、となりのフォルダなんだけど)
まずはリモートの先を設定します。/path/to/yourfolder/remote のところはご自分の環境に合わせて変更してください
git remote add origin /path/to/yourfolder/remote
それでpushします。やったー成功しました。
git push origin master
Bさん役
新しくプロジェクトにBさんが入ってきました。最新のリポジトリをとってきましょう。
適当なフォルダを作りました。tempです。
このとき、コマンドはターミナルでさきほどのAさん用とは別のタブで開いて作業すると便利です。
git clone /path/to/yourfolder/remote
tempフォルダの中で、git cloneするとひとつ階層が下のフォルダができます。
ここでtemp/remoteをpersonBとリネームして階層をひとつ上にひっぱってきました。tempフォルダは削除しました。
これで、リモートリポジトリとAさん、Bさん2人の作業フォルダが完成です!
というわけで、自分の端末上に環境ができたので、いろいろと練習してました。素振りのごとく一人でマージしてましたw
pull, fetch, merge, rebase, revert, resetなど、いろいろコマンドあって大変なんだけど、一通り試してみたら、なんとなくわかってきたような。
あとなんか調べてたら、pullはfetch+mergeとかだとか出てきて、なるほどと思いました。
>> git pull と git pull –rebase の違いって?図を交えて説明します!
それとマージするときにコンフリクトおこしたとき、問題のファイルに、<<<<< head とか自動で書き足されます。そのときに、毎回いちいち編集しなきゃいけないのかな?と思っていたら便利なコマンドがあるのを知って感動しました。
git checkout –ours hello.txt //上側の方をとる git checkout –theirs hello.txt //下側の方をとる
このコマンドで、上側と下側のどちらか片方に自動で置きかわるみたいです。うは!
checkoutってブランチの切り替えだけなのかなと思ったら、こういう使い方もあるんですね。
ローカルで練習できるので、気軽にいろいろ試せるし、いらなくなったらすぐにフォルダを捨てられるので良かったです。
ではでは。よいgitライフを!!
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ