Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Git

git logのbefore/afterオプションで期間を指定する

Git

特定日付の差分を見たい場合は、git diffの"HEAD@DATE"記法が使えます。 shuzo-kino.hateblo.jp単体のタグの記事は shuzo-kino.hateblo.jp "before"オプションと"after"オプションを使えば、特定期間中のログを確認可能です。 実際のところ 2017年1月1日~3月…

gitリポジトリから導入するタイプのionic pluginで特定のタグから引っ張りたい場合

Git

gitリポジトリから導入するタイプのionic pluginで特定のタグから引っ張りたい場合 まともに管理されていれば、タグでバージョンがわかるはずです。 実際のところ 何かとお騒がせのSalesforceMobileSDK-CordovaPluginのうち、 執筆時点でメジャーバージョン…

git checkoutで特定のコミットまで戻る/特定ブランチの先頭まで戻る

Git

コミットID XXXYYYZZZまで戻りたい場合 $ git checkout XXXYYYZZZYOURBRUCHの先頭まで戻りたい場合。 先程のコミットID指定のやつで同じブランチに潜っていたとしても大丈夫です。 $ git checkout YOURBRUCH 参考もと "git checkout --help"

Git で特定のコミットやtagの状態だけcloneしたい……ときでも素直に全部やっといたほうが良い

Git

Git で特定のコミットやtagの状態だけcloneしたいなんてのは、割りと良くある話。 探すとコマンドが出て来るっぽいですが、その後の不整合を考えると 実際のところ 執筆時点において、Salesforce mobile SDKの最新版は5.0です。 が、参考にしているサンプル…

GitでN個前からの変更差分を調べる

Git

一寸前の記事でN日前の差分を取る奴をやりました。 shuzo-kino.hateblo.jp では、その日にやった……というか数分前にコミットした差分はどうするんでしょうか? 実際のところ N日前と同様HEADに細工をします。 たとえば、四個前のdiffは以下のように"^"を4個…

誤ってコミットしてしまったら、--amendで直す事ができる

Git

履歴頼みで雑にコマンドを叩いていると、時折commit commentが誤爆する事があります。 内容は問題ないのにgit resetするのはどうも……。 そんなときは--amendをしたげると、コメントの変更が可能です。 こんな事も知らずにgit使ってたのか……という話ですが。 …

リモートブランチにあるリポジトリを一発で引っ張ってくる

Git

git checkoutは-bオプションを付けてあげると新しいブランチを作って、かつ移動する事ができます。 で、第二引数に導入もとを明記すると……一本のコマンドで新ブランチ作成とマージが一本で出来てしまいます。 実際のところ いままでは、以下のような泥臭いの…

Git diffでブランチ間の差分をとる

Git

Git diffでは、コミット前からの差分だけでなく、ブランチ間のdiffをとる事もできます。 実際のところ ローカルの"fix/22"というブランチとGithub上のorigin/masterブランチについて、 www/templates/home/ディレクトリでの差分を確認したい場合は以下のよう…

git checkout はファイルだけ引っ張ってくる事もできる

Git

git checkout はファイルだけ引っ張ってくる事もできます 実際のところ 例えば、環境再構築でふっ飛ばしてしまったビルドに必要なファイルを安全なコミットxxxxから回収するスクリプトは以下の通り $ git checkout xxxx PATH/TO/FILE

git cloneするとき、最新の部分だけもらってくる

Git

案外知られていないようなのでメモ。Gitリポジトリから、最新のコミット結果だけ欲しい場合、 以下のようにやればOKです。 $ git clone --depth 1 hogehoge帯域が狭い場合など、少しでも高速化したい場合何かにはオススメです。

Gitでコミット数を知るワンライナー

Gitでコミットした量を知るワンライナーです。 git logは各種ログがでてきますが、awkでこれの”Date”分を抽出し、"uniq -c"で出てきた個数を数えると……コミット回数をリストアップできます。 $ git log | awk '/Date/{print " : " $4 " " $3 " " $6}' | uniq…

fileter-branchで誤ってaddしてしまったファイルを「最初から追跡していなかったことにする」

Git

fileter-branchはgitリポジトリにて誤ってaddしてしまったファイルを「最初から追跡していなかったことにする」大技です 相当に過激な技なので使い所を誤ると酷い目にあう危険性大です 実際のところ $ git filter-branch --tree-filter 'rm -f passwords.txt…

git blameで何処の誰が何時変更したか知る

Git

git blameは、どこの誰が、いつそのコミットをイジったか知るためのコマンドです。 git logを延々と追跡するより経済的である事もあります。 実際のところ そのまま 各行毎に、その行をイジった最新の人物と時間、コミットIDが表示されます。 $ git blame fi…

Git diffで特定の日付からの変更を確認したい場合

Git

Git diffで特定の日付からの変更を確認したい場合、以下の記法をつかえばいけます。 実際のところ $ git diff HEAD 'HEAD@{6 month ago}'他にも、特定の日付、時間で検索することも可能です。 $ git diff HEAD 'HEAD@{2015-06-01}' // 同じ意味 $ git diff H…

GitのコミットID(?)が長くてやってられない場合、"--abbrev-commit"をつけると短くできる

Git

GitのコミットID(?)が長くてやってられない場合、"--abbrev-commit"をつけると短くできます。 実際のところ $ git log --abbrev-commit --pretty=oneline ca82a6d changed the version number 085bb3b removed unnecessary test code a11bef0 first commit普…

Git diffで特定のコミットから変更されたファイルを見たい場合"--name-status"でイケる

Git

とある地点からdiffをとると、死ぬほど量があって見るのも大変だったりします。 あるいは、単に変更されたファイル名だけ知りたい場合とか。 そんな時に重宝するのが、”--name-status”オプションです。 実際のところ $ git diff —name-status #{COMMIT_ID}M …

Gitで管理したディレクトリをアーカイブ化する

Git

Gitで管理したディレクトリをアーカイブ化する方法です。 一旦成果物を出さないといけない場合なんかは、これで楽ができます。 実際のところ RailsプロジェクトのHEADをアーカイブする場合を考えます。まず、"/.gitattriubte"にて、除外したいファイル・ディ…

Gitの用語がよく分からない時はgitglossaryを参照してみる

Git

gitglossaryはGitユーザマニュアルの一部で、Gitの用語を解説する資料です。Branchとは、HEADとは、Parentとは、と曖昧なまま使い続けかねない用語について 公式の言葉で親切丁寧に解説してくれています。また、中には公式で活用しているものと思われるジャ…

Git-tagを日付指定して打つ

Git

Git-tagは日付指定して打つ事もできます。 用法としては Git以外*1で管理されていたプロジェクトをインポートしたがtagが必要になった エラー対応で「ここまでは動いている」事が明確な場所についてtagをうつ といった用法が考えられます。 実際のところ 特…

git-tagにコメントをつける

Git

git-tagにはコメントをつける事ができます。ルール上、バージョン名でタグつけないといけないけど後で何やってるか確認したいという時は割りかし便利です。 $ git tag -m "update front views" v2.0.0 参考もと man git-tag

git-cherry-pickというコマンドについて

Git

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で外に出す用のパッチを生成する

Git

git format-patchは外に出す用のパッチを生成するコマンドです。 過去N回分のパッチをつくる "-3"オプションをつけると最新三個分のパッチを吐き出します。 末尾にファイル名なりディレクトリ名なりを入れれば、 その範囲が更新された範囲が更新されたものだ…

git-grepはブランチやタグ、コミットIDを指定できる

Git

以前、Git-grepについては取り上げましたが……shuzo-kino.hateblo.jp最後のトコにブランチやタグ、コミットIDをつけると、その範囲だけgrepしてくれるという便利機能も備えています 実際のところ タグ $ git grep "foga" "tagtest" tagtest:sample.txt:foga …

git-ls-remoteで他の場所にあるgitリポジトリのタグやブランチをみる

Git

git-ls-remoteを使うと、clone先にリポジトリにあるブランチやtagを確認できます。 実際のところ とにかく全部の情報を欲しい時はオプションなし $git ls-remote -t https://github.com/rails/rails.gitただし、閉じたプルリクやら何やら色々入ってくるので…

Git logで過去3日、あるいは指定日以降のコミットをみる

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

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を使おう

Git

Gitのtagは、その名の通り最新のコミットについてタグ付けする機能です。 あるポイントから 実際のところ タグ付け そのまんまです。 2バイト文字も使えるっぽいですが、なるだけ英数字のほうがいいでしょう $ git tag "tagtest" tag以前のコミットをみる gi…

giteverydayで「公式が考える」Git利用者の典型的作業をみてみる

Git

giteverydayはgitを導入するとついてくる「使い方事例」みたいなものです。 変な入れ方をしていなければ、manマニュアルに登録されているので man giteverydayで実行できます。中身はmanを事例を挙げて掘り下げたような感じです。 シナリオとして 個人開発者…

GithubのWikiページにローカルから更新を加える

考えてみれば当たり前なのですが…GithubのWikiページもローカルから更新をかける事ができます。流れは通常のGit cloneと変わりません。 $ git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.wiki.gitリポジトリにアクセス権限があるユーザアカウ…

git diffをpatchで扱える形式にする

Git

Git diff もpatchコマンドで扱う形式に変換できます。通常のgit diffと併せて、"–no-prefix"のオプションを使います。 このオプションは ”--no-prefix” Do not show any source or destination prefix. とあるように、ファイル名のような情報を表示しないオ…

git-stashの内容を確認する

Git

素の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

$ git commit --allow-emptyとやると、空のコミットをつくる事が出来ます。 新しいブランチ切ってとりあえず何かやりたい場合は使えます。ためしにgit log -pして内容を確認すると... $ git log -p commit b098c4b607c58be6b0d0fd42a0732e1d6e39b9e2 Author:…

指定日以前の不要ブランチをまとめて消す

前回の続きっぽい記事です。手当たり次第ブランチを切りまくっていると、問題になってくるのが不要ブランチの処分。 実験用のお砂場として弄り回した果てに存在すら忘れていたのがチラホラ... 以前も似たような事をやりましたが、あのバージョンだと日付以降…

ブランチ一覧を更新時刻つきで表示したい場合、gitのfor-each-refが使える。

Git

ブランチの一覧を更新時刻つきで表示したい場合、gitのfor-each-refが使えます。 sortオプションに更新時刻を指定することで時系列に並べる事ができます。 また、--formatオプションと各種keyの組み合わせにより自由な表示が可能です。 実例 remote/originの…

PS1へ現在いるブランチを表示させる

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のためには、各種バージョン管理ツールが必要

とあるパッケージを入れようとした所、エラーがでました。 $ 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で特定ファイルの変更履歴をみる

Git

"git log -p"は変更履歴つきで編集ログを見せてくれるコマンドです。 これに具体的なファイル名を指定してあげれば、特定ファイルのみの変更履歴を確認することができます。 $ git log -p app/view/hoge/show.html.erbとやれば commit xxxxxxxxxxxxxxxxxxxxx…

git管理下のディレクトリにあるRubyスクリプトの総行数を調べる

まず、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

git checktoutは別ブランチへの切り換えでよく使う子ですね。実はこれ、特定のファイルのみ引っ張ってくる事も可能です。 $ git checkout BRANCH FILE_NAME_A FILE_NAME_Bとすると、BRANCHのFILE_NAME_A、FILE_NAME_Bを引っ張って来ることができます。また、…

Magnum CIでBitbucketの非公開リポジトリをビルドしてみる

Magnum CIはBitbucketの非公開リポジトリでも無料でビルドできてしまう凄いCIツールです。 (記事執筆現在)サインアップすると、次のような画面がでます。 リポジトリを設定 butbucketの設定 hook ssh githubなら、毎度お馴染みのアレで 新規の鍵を追加して M…

git logで全ブランチの状態を表示するアレコレ

Git

単に全てのブランチを表示したい場合 $ git log --graph --all --decorateallオプションがついているので、リモートのアレも含めて表示してくれます。 prettyオプション $ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=shortprettyオプ…

git merge --squashするとブランチの内容を一本化してマージしてくれる

Git

$ git merge --squash branchAてな感じでやると、branchAの内部に数個コミットがあっても一本化してmergeしてくれます。 しかも明示的にcommitしない限りlogに残らない親切仕様。共同作業中のメインブランチに結果をマージする場合にはとっても有効です。 特…

Bashスクリプトを使ってGitのリモートブランチを全部引っ張ってくる

Git

Bashスクリプトを使ってリモートブランチを全部引っ張ってくる方法です。 昨日のものと対になります。 使い方 あらかじめ $ git fetch --all -pしておいた上で、次のスクリプトを実行します。 前回と同様、developとmasterを明示的に排除しています。 $ for …

Bashスクリプトを使って溜まりに溜まったローカルの不要branchを消す

リモート開発をやっていると、不要ブランチが出て来ます。 こまめに消していれば良いのでしょうが、修羅場ではそうも言っていられません。 と、いうわけで、今回の記事では不要ブランチを綺麗にするbashスクリプトを紹介します。 $ for var in `git branch |…

Gitブランチ検索を可能とするgit grepは実際便利

git

git grepは基本grepと同じ使い方ができます。 独自の機能として git管理ディレクトリのみを捜索 ブランチを跨いだ捜索も可能 本家にはない、ワード条件の特殊構文 があります。 多人数で管理しているプロジェクトでは威力を発揮しそうです。 実例 複雑な条件…

git fetchで溜まった不要リポジトリ群は-pオプションで消える

git

git fetch --allでリモートブランチを引っ張ってくると、 そのうち不要ブランチ群のデススタックで引っ張りたい奴がどれだか分からなくなる愉快な事態が発生します。そこで役立つのが-pオプション。 不要になった奴を消し去ってくれます。 $ git fetch -p x …

よく使うGitコマンドを楽に使おう(エイリアス)

Git

やろうやろうと放置してたGitのエイリアスを設定しました。 これで楽できるよやったね! ついで色つけたりしてみました。 [user] name = 俺氏 email = 俺氏@mail.com [core] excludesfile = /Users/俺氏/.gitignore [color] ui = auto [alias] co = checkout…

私家版_忘れがちなgitコマンド集

git

何度も何度も同じワードで検索してる気がしたので、一旦まとめてみました。ローカルリポジトリで新規に作製されたブランチを引っ張ってくる。 git branch new-branch origin/new-branch そのまま以降したい時は git checkout -b new-branch origin/new-branc…

gitでディレクトリ構成を変更したい場合 (git mv)

git

前回の記事にて、その時点の知識でgitのディレクトリ構造の変更を試みたわけですが…… なんと、トラックバックさせて頂いたサイトの管理人kanonji様から、 もし、ファイルの位置を変えたいだけでしたら`git mv`というコマンドもありますよ。 という情報を頂き…

gitでaddしたファイルを非追跡にする方法。(あるいはディレクトリ構造を変更するイケてない方法)

git

やたら入り込んだ構造の成果物を、特に考えもなくフォルダごと"add"してしまいました。 が、毎度毎度ファイルパスを叩かないといけないので、非常に効率が悪い状況となってしまいました。 そこで今回は一度追跡対象にしてしまったファイルを一旦消し、別ディ…