あまり知られていないGitのTips
思い浮かんだGitのTipsを列挙してみました。
gitのコマンドをで補完する
git-completion.bash を入れると、
また、PS1の設定を行うと現在のブランチ名が常にbash上に表示されるようになります。
(Windowsの場合、msysgit は標準で入ってます)
インストール方法(引用)
# To use these routines: # # 1) Copy this file to somewhere (e.g. ~/.git-completion.sh). # 2) Add the following line to your .bashrc/.zshrc: # source ~/.git-completion.sh # # 3) Consider changing your PS1 to also show the current branch: # Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' # ZSH: PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' # # The argument to __git_ps1 will be displayed only if you # are currently in a git repository. The %s token will be # the name of the current branch.
詳しくはググッて下さい。
自分の環境でのみ特定のファイルを無視する
$ touch ~/.gitignore_global $ git config --global core.excludesfile ~/.gitignore_global
自分の環境で常に無視したいファイル(vimで作られる.swpなど)は~/.gitignore_global で管理するといい。
このignore設定は他のユーザと共有されません。
あるリポジトリでのみ、特定のファイルを無視する
無視したいファイルをプロジェクト全体で共有したくない場合、
このignore設定も前述した.gitignore_globalと同様に他のユーザと共有されません。
タグをpushする
$ git push origin <タグ名>
git push --tags は意図しないタグまでpushする可能性があるので、無闇に使わない方がいい。
一つ前のコミットを同じコミットメッセージのまま修正する
$ git commit --amend -C HEAD
-C は指定のコミットのログメッセージ、authorを使いまわす。
--amend を使う場合は前のコミットを少し直す事が多いので、ログメッセージが同じで問題なければ"-C HEAD"にすると入力の手間が省けます。
リモートのブランチ(feature/foobar)を削除する
$ git push origin :feature/foobar
少し分かりづらいので、メモとして。
リモートのタグ(v1.0.0)を削除する
$ git push origin :v1.0.0
ブランチと同じだけど、メモとして。
リモートリポジトリで削除されたブランチをfetchと同時にローカルでも削除する
$ git featch --prune origin
同様のことをgit remoteコマンドでも出来ます
$ git remote prune origin
削除されるのはリモート追跡ブランチ(origin/feature/foobar)で、追跡ブランチ(feature/foobar)は削除されません。
gitでは他人がリモートリポジトリのブランチを消しても、リモート追跡ブランチは自動的に消えません
昨日のmasterから、今日のmasterまでの変更を表示する
$ git log master@{yesterday}..master
昨日のmasterが参照していたコミットオブジェクトから、現在のmasterまでのログを表示する。
詳しくは「入門Git p.284」を読めば分かる。
masterのログで、昨日以降に作られたログを表示する
$ git log --since=yesterday master
こちらは、コミットオブジェクトの日時が昨日以降のログを表示する。
詳しくは「入門Git p.284」を読めば分かる。
fetchのときにリモートのタグをorigin/にリネームする
$ git fetch -n origin refs/heads/*:refs/remotes/origin/* refs/tags/*:refs/tags/origin/*
ローカルのタグとリモートのタグを分けたい場合に使うと便利です。
$ git tag | grep -v "origin"
のようにして、ローカルのタグだけ表示させたりも出来ます。
mergeコミット(develop~3)をrevertする
$ git revert develop~3 -m 2
マージコミットをrevertする場合、親を番号で指定する必要があります。
事前にlogコマンドで対象を確認した方がいい。
$ git log -n 1 develop~3^2
直近のタグを調べる
$ git describe
現在のブランチからログを辿り、最初に見つけたアノテーションタグを表示します。
軽量タグも含めて検索する場合、"--tags"のオプションを指定する必要があります。
現在いるブランチをリモートにpushする
$ git push origin HEAD
pushの時にブランチ名を入力せずにpush出来て便利。*1
HEADがブランチでない場合はエラーになります。
普通のやり方は下記の通り。
$ git push origin <現在いるブランチ名>
直前にいたブランチを指定する
$ git checkout -
これはトピックブランチで作業が終わった後などに使うと便利。
$ git checkout master $ git merge -
ブランチのを指定する
$ git checkout develop@{0}
rebase を多用する人向けです。
その他のTips
見えないチカラ: 【翻訳】あなたの知らないGit Tips に便利なTipsがあるので、こちらも参考に。
このTipsに書かれているものは省略してあります。
参考資料 - Web
Pro Git
SCMBootCamp のGit入門資料
参考資料 - 書籍
- 作者: 濱野純(Junio C Hamano)
- 出版社/メーカー: 秀和システム
- 発売日: 2009/09/24
- メディア: 単行本
- 購入: 31人 クリック: 736回
- この商品を含むブログ (155件) を見る
*1:私はgit config --global alias.psh "push -u origin HEAD"を設定しています