git
使わないと覚えないね
チェックアウト
git clone git@github.com:s-aska/markdown-binder.git
ファイル追加
git add app.psig
ファイル追加 ( カレント以下全部、対象は git status で確認 )
git add .
ファイル追加取り消し
git rm --cached app.psig
ファイル追加取り消し ( カレント以下全部 )
git rm --cached -r .
ローカルとレポジトリの差分を確認
git status
ファイルの変更を元に戻す
git checkout ファイルパス
ファイルの変更を元に戻す ( カレント以下全部 )
git checkout .
コミット
git commit -m 'add app.psgi'
ローカルのコミットをリモートに反映
git push origin master
リモートの更新をローカルに反映
git pull
ブランチ一覧を確認
git branch -a
ブランチを切る
git branch aska-work
ブランチを切り替える
git checkout aska-work
リモートブランチをチェックアウト
git checkout -b aska-work origin/aska-work
ブランチの更新をリモートに反映
git push origin aska-work
ブランチの更新を master に反映する
git checkout master
git merge aska-work
git push origin master
ブランチを削除する
git branch -d aska-work
git push origin :aska-work
master の更新を ブランチ に反映する
git checkout master
git pull
git checkout aska-work
git merge master
git push origin :aska-work
タグを打つ
git tag 1.00
git push --tags
リモートのレポジトリに名前をつける
git remote add github git@xxx:user/hoeg.git
リモートのレポジトリを参照ブランチとして持ってくる ( ステージ、作業ディレクトリに影響はない )
git fetch
# pullと同様の状態にするにはマージする
git merge
未コミットの変更を一旦退避
git stash save
退避した未コミットの変更を戻す
git stash pop
githubでforkしたレポジトリに元レポジトリの変更をマージ
git pull git@xxx:user/hoeg.git master
git push
working
特定の機能を盛り込む作業を始め、レポジトリオーナーにマージを乞う
git branch topic
# ファイル編集
# masterをpullする前に自分の作業ブランチにcommitしておく
git add some_file
git commi -m 'some message.'
git checkout master
git pull
git checkout topic
# commitしておいた分と照らし合わせてAutoMergeしてくれる、
# ここでconfrictしたら手で直す。
git merge master
perl Makefile.PL
make
make test
# confrictを手で直している場合は修正してcommitしておこう。
# masterをmergeした後は、速やかにcommitしておかないと自分の更新と混ざるとcommitログが見辛くなる
# -m 使うとログメッセージにConfrictを直した事が記述されず、masterにclean merge出来ないので注意
git commit
git push origin topic
# say "please merge topic branch!"
# 必要なければブランチを消す
ログを簡易表示
git log --pretty=oneline
ブランチの内容を作業ディレクトリに持ってくる
git checkout master .
ステージの内容を作業ディレクトリに持ってくる
git checkout .
git add hoge.txt
vim hoge.txt
# hoge.txtの変更を巻き戻したい
git checkout hoge.txt
githubで貰ったプルリクエストの適応
git checkout -b pull-request-master master
git pull git://github.com/sylvainfilteau/dropbox-api-command.git
# 動作確認
# この時点で commit までされるので、commitする必要は無い
git checkout master
git merge pull-request-master
git push
# 連絡
githubでプルリクエストを送る
予めcloneしていてローカルが古くても気にせずfork元の最新から作業する手順
git clone git@github.com:s-aska/Net--Dropbox.git
cd Net--Dropbox
git remote add github-norbu09 https://github.com/norbu09/Net--Dropbox.git
git fetch github-norbu09
git tag
# 相手がリリース毎にタグを打っている場合はStableなタグから作業を始める
git checkout -b maint-oauth refs/tags/1.2
# メンテ時はここからファイル編集、テスト、git add、git commitする
git add some_file
git commit
# 「もうmasterに入れちゃった更新が...」という時はcherry-pickで救出
git cherry-pick e392a9264718db5a0da6
git cherry-pick 07c5d97ec6f590d94957
git push --all
# あとはGUIからmaint-oauthブランチを選択し、「プルリクエスト」すれば良い
# masterブランチ?あっち使うと大量のmergeのcommitログまで送ってしまうので注意
# bugや機能追加はそれぞれブランチを切ると別々にプルリクエストを送ることも出来る
# これは要らなかったら破棄して下さいとかそういう時は分けた方が親切かも
# 相手側でcherry-pickする事もできるけど