Contenu connexe
Similaire à Gitの使い方あれこれ (20)
Gitの使い方あれこれ
- 2. 自己紹介
お名前: よしだあつし
Twitter ID: @yalab
職業: ニート兼プログラマ
好きな食べ物: カレー
興味: Rails 3.1, scala
+android, 最短経路
- 6.
今日やるのはgitのTipsあれこれの
紹介だけです
ハンズオンはそのうちきっとやります
ので今日はお話だけ
資料はちゃんと公開しますので...
- 7. 注意
HEAD という言葉がしばしば出てき
ますが git log して一番上に表示さ
れる commit のことをさします
HEAD^ と書いてあると HEAD の
一つ前の commit のことをさしま
す
- 12.
git reset HEAD すると git add し
たファイルをaddしてない状態に戻せ
る
$ git reset HEAD .DS_Store
- 14.
reset を使うとコミットを巻き戻せます
$ git reset --hard HEAD
--hard を付けると変更が永久に失
われます。変更を残しつつコミットを
巻き戻したいときは --soft を付けて
やってください
- 16.
commit に --amend オプションを
付けると直前のコミットをやり直せます
$ git commit -m "Fixed Foobar"
(app/views/users/show.html.erb でtypoが見つかった)
$ vi app/views/users/show.html.erb //typoを修正する
$ git add app/views/users/show.html.erb
$ git commit --amend
- 17. git いろいろ
「git reset --hard HEAD するつもり
が git reset --hard HEAD^ してしま
いました。失われた HEAD を取り戻せ
ないでしょうか」
- 18.
reflog で消しちゃった commit を確
かめて merge する
$ git reflog
f7329c6 HEAD@{0}: HEAD^: updating HEAD
5f777c3 HEAD@{1}: checkout: moving from branch2 to master
2cbae2f HEAD@{2}: merge 2cbae2f: Fast-forward
$ git merge 5f777c3
- 21. git いろいろ
「git stash apply するつもりだったの
ですがzshの補完で git stash clear し
てしまいました...どうにかならないでしょ
うか?」
- 22.
fsck --unreachable と show で目
的の commit を探して merge する
$ git fsck --unreachable | grep commit
unreachable commit 312c16b3f1691b065cdff566dbfa3bf7c9659d34
unreachable commit 62763c8b20179c8feaff357c4308c139ebaf8010
$ git show 312c16b3f1
$ git merge 312c16b3f1
- 24.
後付けでリリースブランチを作成する
-◎--◎--◎--◎--◎--◎--◎--◎master
↑ ↑
↑ ここから先がリリース後の機能追加
↑
ここがリリースしたところ
続く
- 25.
後付けでリリースブランチを作成する
-◎--◎--◎--◎--◎--◎--◎--◎master
\
◎--◎ release
↑ ↑バグフィックス
↑ブランチを分ける
続く
- 26.
後付けでリリースブランチを作成する
$ git log // リリースした commit を探す
(commit abcde4 がリリースしたブランチだったとする)
$ git checkout -b release abcde4 // ブランチを作成
$ vi app/models/user.rb // バグを修正する
$ git commit -a -m "Fixed Hoge bug"
$ git push origin release
続く
- 27.
本番環境を作成したリリースブランチ
にする
% git fetch origin --all // リモートに作ったブランチ
% git branch -r // リモートにあるブランチを確認する
* origin/master
origin/release
% git checkout --track origin/release // git 1.6.2 以降
% git checkout -b release origin/release // git 1.6.1 以前
- 32.
問題ないのでリモートリポジトリを
merge する
$ git remote add yalab_repos http://git@github.com/yalab/hoge
$ git fetch yalab_repos
$ git checkout -b local/yalab yalab_repos/master
$ git merge local/yalab
$ git push
- 35. まとめ
今回は git の Tips をいろいろ紹
介しました
今回紹介しなかったものもいっぱ
いあります(例: git bisect とか
git blame とか)
こんなことできないかな?という事
の大抵の事はできます