概要
Git、プログラミングをしてたら聞いたことはあるけど使ったことないやという人が結構多いと思います。使いこなせると便利なのでぜひ使ってみてください。なによりGit使いこなせるとかっこいいですよね!(そういう問題ではない)
公式リファレンスが詳しくて便利です。これを一通り目を通せば問題ないはず。
以下はまあ、メモです。あとで分かりやすいようにまとめようと思います(暇があれば)
git初期設定
git config --global user.email "webmaster@xooms.jp"
git config --global user.name "webmaster"
git config --global color.ui auto
git config --global core.editor emacs
alias
git config --global alias.st status
git config --global alias.br branch
git config --global alias.ci commit
push設定
git push
をしたときに今いるブランチだけをリモートにプッシュする。リモートのブランチが現在のブランチと同じ時、プッシュする。
git config --global push.default=simple
branch
新規ブランチの作成
$ git br hoge#(ブランチ名)
ブランチの移動
$ git co hoge
新規作成して移動
$ git co -b hoge
ブランチの削除
$ git br -d hoge
リモートのブランチを確認
$ git br -a
リモートのブランチを削除
#ローカルのhogeブランチが削除済みだとして
$ git push origin :hoge
リモート
リモートレポジトリを加える
$ git remote add remote-name url
リネーム
$ git remote rename old-name new-name
リモートレポジトリのアドレス削除
$ git remote rm name
push
$ git push origin(remote-name) master:master
最後のmaster:master
はmaster
でもいい。
意味はlocal-branch:remote-branch
である。
オプション-u(=--set-upstream)
をつけると以降からgit push
だけで出来るが、ブランチを変える場合は注意。(push.default=simpleと設定しておくと安心)
commitの変更
直前のcommitを変更する。
git commit --amend
使用すると現在ステージしたものと直前のコミットを結合してくれる。コミットメッセージも変更できる。
commitを纏める
git rebase
を使用する。分かりにくいのでインタラクティブモード(-i)がおすすめ。
git rebase -i HEAD~2 #過去2つぶんのコミットを表示する。
そうするとエディタが立ち上がるから
pick 9a54fd4 commit message 1
pick 0d4a808 commit message 2
下のpickをsquashもしくはfixupに変更して保存。
squashの場合コミットメッセージを変更できる。(デフォルトでは2つのコミットメッセージが合わさる)
fixupの場合はコミットメッセージが消される。
commit messageを変更する
上記と同じようにrebaseして
pick 9a54fd4 commit message 1
pick 0d4a808 commit message 2
pickをeditもしくはrewordに変更して保存。
editの場合そのあとgit commit --amend
をする必要がある。
commitを消去する
pickをdropに変更する。使う時は気をつけよう。
注意点
amendもrebaseもコミットを新しく作るものなのでリモートにpushしたコミットに対して使用してはらない!諦めて修正のコミットをpushすべし。
あぁ、このすばらしいリベース機能。しかし、残念ながら欠点もあります。その欠点はほんの一行でまとめることができます。
公開リポジトリにプッシュしたコミットをリベースしてはいけない
この指針に従っている限り、すべてはうまく進みます。もしこれを守らなければ、あなたは嫌われ者となり、友人や家族からも軽蔑されることになるでしょう。(git documentationより)