Git
fileter-branchはgitリポジトリにて誤ってaddしてしまったファイルを「最初から追跡していなかったことにする」大技です 相当に過激な技なので使い所を誤ると酷い目にあう危険性大です 実際のところ $ git filter-branch --tree-filter 'rm -f passwords.txt…
git blameは、どこの誰が、いつそのコミットをイジったか知るためのコマンドです。 git logを延々と追跡するより経済的である事もあります。 実際のところ そのまま 各行毎に、その行をイジった最新の人物と時間、コミットIDが表示されます。 $ git blame fi…
Git diffで特定の日付からの変更を確認したい場合、以下の記法をつかえばいけます。 実際のところ $ git diff HEAD 'HEAD@{6 month ago}'他にも、特定の日付、時間で検索することも可能です。 $ git diff HEAD 'HEAD@{2015-06-01}' // 同じ意味 $ git diff H…
GitのコミットID(?)が長くてやってられない場合、"--abbrev-commit"をつけると短くできます。 実際のところ $ git log --abbrev-commit --pretty=oneline ca82a6d changed the version number 085bb3b removed unnecessary test code a11bef0 first commit普…
とある地点からdiffをとると、死ぬほど量があって見るのも大変だったりします。 あるいは、単に変更されたファイル名だけ知りたい場合とか。 そんな時に重宝するのが、”--name-status”オプションです。 実際のところ $ git diff —name-status #{COMMIT_ID}M …
Gitで管理したディレクトリをアーカイブ化する方法です。 一旦成果物を出さないといけない場合なんかは、これで楽ができます。 実際のところ RailsプロジェクトのHEADをアーカイブする場合を考えます。まず、"/.gitattriubte"にて、除外したいファイル・ディ…
gitglossaryはGitユーザマニュアルの一部で、Gitの用語を解説する資料です。Branchとは、HEADとは、Parentとは、と曖昧なまま使い続けかねない用語について 公式の言葉で親切丁寧に解説してくれています。また、中には公式で活用しているものと思われるジャ…
Git-tagは日付指定して打つ事もできます。 用法としては Git以外*1で管理されていたプロジェクトをインポートしたがtagが必要になった エラー対応で「ここまでは動いている」事が明確な場所についてtagをうつ といった用法が考えられます。 実際のところ 特…
git-tagにはコメントをつける事ができます。ルール上、バージョン名でタグつけないといけないけど後で何やってるか確認したいという時は割りかし便利です。 $ git tag -m "update front views" v2.0.0 参考もと man git-tag
git cherry pickは別ブランチの差分を摘んで頂くコマンドです 実際のところ $ git cherry-pick v2.6.14..private2.6.14これは、以下のコマンドに相当します。 $ git format-patch -k -m --stdout v2.6.14..private2.6.14 | git am -3 -k 以下、増強中 参考も…
git format-patchは外に出す用のパッチを生成するコマンドです。 過去N回分のパッチをつくる "-3"オプションをつけると最新三個分のパッチを吐き出します。 末尾にファイル名なりディレクトリ名なりを入れれば、 その範囲が更新された範囲が更新されたものだ…
以前、Git-grepについては取り上げましたが……shuzo-kino.hateblo.jp最後のトコにブランチやタグ、コミットIDをつけると、その範囲だけgrepしてくれるという便利機能も備えています 実際のところ タグ $ git grep "foga" "tagtest" tagtest:sample.txt:foga …
git-ls-remoteを使うと、clone先にリポジトリにあるブランチやtagを確認できます。 実際のところ とにかく全部の情報を欲しい時はオプションなし $git ls-remote -t https://github.com/rails/rails.gitただし、閉じたプルリクやら何やら色々入ってくるので…
$ git log --since='3 days ago'since以外にも、それ以前のコミットをみるuntilなんてのもあります。 --since=, --after= Show commits more recent than a specific date. --until=, --before= Show commits older than a specific date. なお、ここでのdat…
git diffは差分を出すコマンドです。 実際のところ 特定のファイルについて特定コミットからの差分を得る $ git diff a37f... sample.txt diff --git a/sample.txt b/sample.txt index 76e579a... 100644 --- a/sample.txt +++ b/sample.txt @@ -1,2 +1,2 @@…
Gitのtagは、その名の通り最新のコミットについてタグ付けする機能です。 あるポイントから 実際のところ タグ付け そのまんまです。 2バイト文字も使えるっぽいですが、なるだけ英数字のほうがいいでしょう $ git tag "tagtest" tag以前のコミットをみる gi…
giteverydayはgitを導入するとついてくる「使い方事例」みたいなものです。 変な入れ方をしていなければ、manマニュアルに登録されているので man giteverydayで実行できます。中身はmanを事例を挙げて掘り下げたような感じです。 シナリオとして 個人開発者…
考えてみれば当たり前なのですが…GithubのWikiページもローカルから更新をかける事ができます。流れは通常のGit cloneと変わりません。 $ git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.wiki.gitリポジトリにアクセス権限があるユーザアカウ…
Git diff もpatchコマンドで扱う形式に変換できます。通常のgit diffと併せて、"–no-prefix"のオプションを使います。 このオプションは ”--no-prefix” Do not show any source or destination prefix. とあるように、ファイル名のような情報を表示しないオ…
素のgit-stash-showならば git stash show spec/hoge.feature | 3 ++- spec/fuga.feature | 12 ++---------- spec/steps/page_steps.rb | 4 ++-- 3 files changed, 6 insertions(+), 13 deletions(-)と差分を見る事ができます。 pオプションをつけると $ git…
$ git commit --allow-emptyとやると、空のコミットをつくる事が出来ます。 新しいブランチ切ってとりあえず何かやりたい場合は使えます。ためしにgit log -pして内容を確認すると... $ git log -p commit b098c4b607c58be6b0d0fd42a0732e1d6e39b9e2 Author:…
前回の続きっぽい記事です。手当たり次第ブランチを切りまくっていると、問題になってくるのが不要ブランチの処分。 実験用のお砂場として弄り回した果てに存在すら忘れていたのがチラホラ... 以前も似たような事をやりましたが、あのバージョンだと日付以降…
ブランチの一覧を更新時刻つきで表示したい場合、gitのfor-each-refが使えます。 sortオプションに更新時刻を指定することで時系列に並べる事ができます。 また、--formatオプションと各種keyの組み合わせにより自由な表示が可能です。 実例 remote/originの…
brewでgitを導入した場合、以下のディレクトリに存在しています。 $ ls /usr/local/Cellar/git/2.0.0/etc/bash_completion.d/git-completion.bash とgit-prompt.shがあります。 今回つかうのは後者です $ cp /usr/local/Cellar/git/2.0.0/etc/bash_completio…
とあるパッケージを入れようとした所、エラーがでました。 $ go get github.com/kr/godep go: missing Mercurial command. See http://golang.org/s/gogetcmd package github.com/kr/godep imports code.google.com/p/go.tools/go/vcs: exec: "hg": executab…
"git log -p"は変更履歴つきで編集ログを見せてくれるコマンドです。 これに具体的なファイル名を指定してあげれば、特定ファイルのみの変更履歴を確認することができます。 $ git log -p app/view/hoge/show.html.erbとやれば commit xxxxxxxxxxxxxxxxxxxxx…
まず、git ls-filesというコマンドを使うとファイル名一覧を出す事が出来ます。 $ git ls-files .gitignore .magnum.yml .rspec Gemfile README.rdoc Rakefile app/assets/images/.keep app/assets/javascripts/application.js app/assets/javascripts/boots…
git checktoutは別ブランチへの切り換えでよく使う子ですね。実はこれ、特定のファイルのみ引っ張ってくる事も可能です。 $ git checkout BRANCH FILE_NAME_A FILE_NAME_Bとすると、BRANCHのFILE_NAME_A、FILE_NAME_Bを引っ張って来ることができます。また、…
Magnum CIはBitbucketの非公開リポジトリでも無料でビルドできてしまう凄いCIツールです。 (記事執筆現在)サインアップすると、次のような画面がでます。 リポジトリを設定 butbucketの設定 hook ssh githubなら、毎度お馴染みのアレで 新規の鍵を追加して M…
単に全てのブランチを表示したい場合 $ git log --graph --all --decorateallオプションがついているので、リモートのアレも含めて表示してくれます。 prettyオプション $ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=shortprettyオプ…