#gitとは
分散型のソースコード管理システムで、基本的にはSSH認証で利用する事が多い
#よく使うコマンド
##一応ストーリー仕立てで紹介します。
0. 「0.」の最低限知っておきたいコマンドを覚えたら、1.から7.まで見て行きましょう。
- 「1.」ログを見て、その中から
- 「2.」任意のコミットIDをマージしたい。だが、マージしたらコンフリクトを起こしてしまったので
- 「3.」差分が理解できてる方を優先させたい。
- 「4.」untracked fileができているので解消したい
- 「5.」色々さわっていたが、ひとまずリモートの変更分を全部反映させたい。
- 「6.」マージが壊れてしまい、よくわからないので、全部リセットしたい。
- 「7.」リセットして、新しいブランチを作りたい。
##0. 最低限これだけは知っておきたい
$ git clone
$ git init
$ git add → git rm --cache ファイル名で消せます
$ git pull
$ git commit
$ git push
特に紹介はいらないと思いますが、一応
- cloneでソースをローカルにコピーするか、initでgitプロジェクトを作るかしてから
- addでファイルを索引に追加する
- pullは、リモートの変更分をローカルに取り込みます
- commitでaddしたファイルをローカルブランチにコミットをします
- pushでcommitしたものをリモートブランチにプッシュします
1. ログを比較しよう
$ git log fileA fileB
fileAとfileBを比較したログを出力する
##2. コミットログから、任意のものをマージしたい
$ git cherry-pick コミットID
任意のコミットをチェックアウトしている現在のブランチに入れます
##3. 衝突した、どうする?
# マージ元ソースを優先
$ git theirs fileA fileB ...
# マージ先ソースを優先
$ git ours fileA fileB ...
マージした場合、明らかな差異を把握している時になぜかコンフリクトが起きるときがあります。
具体的には、例えば改行コードとかそういう系ですね
そんな時にこのコマンド使えば余裕です。そして、複数指定できるので、1回のコマンドで完結します。
##4. untracked fileってなんだよ
# 消えるソース確認
$ git clean --dry-run
#消す
$ git clean -f
untracked fileというのが見えたら、まずはcleanで消えてしまうソースを確認します。
問題なかったら-fを指定して消しましょう
物理削除ですが、GUIで消すより全ターミナルで完結するので非常におすすめです。
##5. 一先ず自分の変更は後回しだ
# 変更履歴を保存する
$ git stash save "コメント"
# stashしたログが出力
$ git stash list
# 変更履歴を戻す
$ git stash pop stash@{0}
自分の変更を後回しにしてとにかくまずリモートを取り込みたいときは、自分の変更分を一旦退避させておいて、リモートをローカルブランチにpullしましょう
##6. もうどうしようもなくなった時
# ファイル単位でHEADに戻す
$ git reset HEAD fileA
#ブランチ毎HEADに戻す
$ git reset --hard HEAD
全部HEAD状態に戻す。
マージとかしていて、良く分からなくなった時に使います。私は1日に数10回ぐらいresetします
##7. 新しいブランチを作りたくなった
$ git checkout -b 名前
このコマンドを使って、ローカルに新しくブランチを作る事が出来ます
消したくなった時
# ローカルブランチを削除
$ git branch -d 名前
# リモートブランチを削除
$ git push origin :名前
単純に消すコマンドです。作ったら消したくなるときもくると思います。
#最後に
よく使うコマンドは忘れる事はないですが、ふと使ってない時にど忘れする事もあります。
gitは奥深いので意外と出来ないと思ってたことができたりします。
ぜひあなたもgitマスターへ
##コマンドのインデックス
→http://git-scm.com/book/commands