weblog of key_amb

主にIT関連の技術メモ

Git

Git のリポジトリを1コマンドで統合できるシェルスクリプトを書いた

気づいたら GitHub にリポジトリが40個以上ありました。 古いものは作りかけだったり、実験して後に放置したものなどがいろいろありました。*1 そのままでも特に困ることはなく、これまで気にすることはなかったのですが、最近ときどき邪魔だなと思うことが…

git push する前に stash して pull --rebase してくれるシェルスクリプト書いた

git push しようとして陥りがちなパターン: remote branch が更新されてて push がこける local 差分があるため git pull --rebase できない こういうケースでイライラしないために、 git stash && git pull --rebase && git push && git stash pop みたいな…

Git Tag を使って GitHub にリリースする

やってみると意外と簡単でした。 タグを作って GitHub に push すれば自動的に Release が作られます。 タグを作る git tag -a 0.01 -m "release 0.01" [commit hash] 末尾にコミットハッシュを付けることで特定の時点のタグを、後から遡って付けることもで…

git commit 時の author 情報を一時的に or 特定のリポジトリで変える

Git

いままでずっと alias oreno-commit='git commit --author="アカウント <メアド>"' みたいな alias 作ってやってたのだけど、下記でもいいことに最近気がついた。 export GIT_AUTHOR_NAME=アカウント export GIT_AUTHOR_EMAIL=メアド 上を自分のスニペットに…

プロジェクトで使用するライブラリが増えてきたので git submodule を使ってみる

Git

(1) submodule を配置するディレクトリを決める 今回は単純に submodule/ とします。 (2) プロジェクトに submodule を追加する git submodule add https://github.com/key-amb/bash-pmver.git submodule/bash-pmver git commit -m "add submodule key-amb/b…

git clone 時に最新の履歴だけを取得する

Git

git clone すると、通常は過去の履歴をまるごと取ってきますが、歴史の深いプロジェクトだとそれだけで時間が掛かる、ということは往々にしてよくあることだと思います。 そんなとき、--depth <N> オプションをつけると、履歴を <N> 個しか取得しません。 以下は例</n></n>…

Git メモ - 日本語ファイル名の表示

Git

下記設定で行けます。 $ git config --global core.quotepath false これで日本語ファイルが git status や git log などで表示されるようになります。 参考 git/日本語ファイル名をgit statusなどで表示する方法 - TOBY SOFT wiki

git gc/prune で unreachable loose objects を掃除する(メモ)

Git

ある日 working tree で作業していると以下のような警告を目にした。 warning: There are too many unreachable loose objects; run 'git prune' to remove them. みなさんにもこんな経験はないだろうか。 こんなときはメッセージに従って git prune または …

git clean - 追跡されてないファイルを削除する

Git

ワーキングツリー上のgit管理下にないファイルは git clean で削除することができる。 git clean [-d] -n # 削除対象の確認 git clean -f # 削除実行 git clean -d -f # ディレクトリも含めて削除 d をつけると、ディレクトリも対象になる。 参考 transitive…

git filter-branch - 過去の歴史をまとめて塗り替える

Git

パスワードファイルが間違えてcommitされていたことに後から気づいた場合、過去のコミットにわたってこれを一括で消したい。 そんなことを行うときに、git filter-branchを使うといい。 git filter-branch --index-filter \ "git rm -rf --cached --ignore-u…

git:リモートブランチの作成/削除

Git

branchの作成 git checkout -b {branch名} 作成したbranchをリモートリポジトリにpush git push origin {branch名} リモートブランチからローカルに作業ブランチを作る git checkout {branch名} origin/{branch名} リモートブランチの削除 git push origin :…

git stashの使い方

Git

ローカルのワーキングツリーを編集した状態でgit pullすると、警告が出てpullできないことがある。 そんなときは、git stashで一時保存するとよい。 すると、ローカル編集がstashに退避されるので、pull可能になる。pullした後、git stash pop で stash に退…

gitの出力に色をつける

Git

下記を実行する。 $ git config --global color.ui true これで git diff や git status の表示がカラフルになって、はかどる。 参考 Git - Git の設定

git ブランチの削除

Git

要らなくなったブランチの削除。 ローカルブランチ git branch -d ブランチ リモートブランチ git branch -d ブランチ git push origin :ブランチ 参考 Git で不要になったローカルブランチ・リモートブランチの削除 - sotarokのお勉強

gitでローカル編集/add/commit/pushを取り消す(まとめ)

Git

svnのときはrevertすればいいのだが、gitではリモートリポジトリにpushするまでのステップ数が多いのでややこしい。各ステップで巻き戻し方が異なるので、使い分けが必要。 この記事でそれらの方法についてまとめる。 最も確実な方法 ローカルリポジトリの変…

gitのコミットログを汚さない方法

Git

gitでは不都合な歴史を削除することができる。 つまり、不要なコミットログを消したり、最後のコミットに修正を追加するということもできる。 これらの機能を利用して、共有リポジトリにpushする前に、コミットログをきれいにしておきましょう。 最後のコミ…

git config 備忘録

Git

git configに関するメモです。 後々整理予定です。 設定ファイルの話 3つの設定ファイルがあります。 ファイルパス 有効範囲 優先順位 内容 備考 /path/to/repos/.git/config reposリポジトリのみ 1位 リポジトリごとの設定を保存する ~/.gitconfig 該当ユー…

git diff の使い方

Git

この記事にまとめる予定。 Options Option 意味 --word-diff 単語単位で差分を見る Tips patchコマンドで取り込めるdiffを生成するには、--no-prefixオプションをつける。 git diff --no-prefix <リビジョンA>..<リビジョンB> > patch.diff patch --dry-run …

Gitにおけるファイルパーミッションの変更

Git

git 1.7.2.2はファイルパーミッションの変更を検知してくれるようだ。 $ chmod +x hoge.sh $ git diff diff --git a/hoge.sh b/hoge.sh old mode 100644 new mode 100755

gitでリモートリポジトリの変更を取消す方法

Git

この記事にまとめました。間違えてcommitしたときは次のコマンドで取り消せる。 git reset --soft HEAD^ 間違えてpushしちゃったときは↑を叩いた上で、以下を打つ。 git push -f origin HEAD^:master 参考 gitで共用リポジトリにpushした変更を取り消す。 - …

gitで変更履歴や差分を確認する

Git

自分が知らない間に何が行われた突き止める。 git log --stat --since="1 days" until オプションで「何日前まで」といった指定も可能。また、"1 days"の部分は、hoursなどでもいい。 stat オプションをつけると変更されたファイルと、変更の量がわかる。 gi…

gitで不要なaddを取消す

Git

この記事にまとめました。不要にaddしてしまったファイルを取消すとき。 git rm --cached path/to/file git rm -r --cached path/to/file または、 git reset HEAD -- path/to/file 参考 gitで不要なaddを取り消す方法 - mumoshu.log

Gitチュートリアル

Git

そろそろgit覚えないと。。と思って、リポジトリを作ってちょこちょこいじりながら覚える。 $ mkdir ~/gittest/ $ cd gittest $ git init $ echo hoge > hoge.txt $ git commit -a -m "add hoge" $ cd ~/remote $ git clone ~/gittest gittest2 $ # ~/gittes…