ラベル Git の投稿を表示しています。 すべての投稿を表示
ラベル Git の投稿を表示しています。 すべての投稿を表示
2014/10/05

git diff で JSON を整形して比較する

Git でJSON を整形して比較できるらしいのでメモ。
JSON だけでなく Word や ODT、 Jpeg や PNG なども
実ファイルを比較時に変換させることができるみたいです。

参考
Git - Git Attributes
Git - gitattributes Documentation

設定

*.json diff=json
[diff "json"]
 textconv = "jq ."
2014/09/22

[zsh]peco で git をもっと便利にする

peco を導入しました。すごく便利です。
導入についてはコチラ↓
peco を導入した | DevAchieve

peco で色々フィルタリングして選択できるのは
ファイル、ハッシュ、ブランチを選択する事が多い Git と相性が良さそうです。

peco script を色々作るとエイリアスとか大変っぽいので
zsh のグローバルエイリアスを使ってみました。

編集されたファイルをフィルタリングする

function peco-git-changed-files(){
    git status --short | peco | awk '{print $2}'
}
alias -g F='$(peco-git-changed-files)'

使い方

git add F
Ctrl + Space で複数ファイル選択して add も可能です。

コミットのハッシュをフィルタリングする

function peco-git-hash(){
    # git log --oneline --branches | peco | awk '{print $1}'
    git lg | peco | sed -e "s/^[\*\|][ |\\\/\*]*//g" | awk '{ print $1 }'
}
alias -g F='$(peco-git-hash)'
[alias]
 lg = log --all --graph --decorate --oneline
git lg (log graph) は僕の git log を置き換えるコマンドです。
以下のようにコミットが確認できるので履歴確認、ブランチ確認、マージする際に便利なコマンドです。

peco ではこの色付けがなくなってしまうので残念です。頑張って保持して欲しいところ。

使い方

git diff F とか git cherry-pick F とか。
おおよそコミットのハッシュを指定するところ全てで使えるんじゃないですかね?
git diff で複数選択とか便利です。

ブランチをフィルタリングする

function peco-git-branch(){
    git branch | peco | sed -e "s/^\*[ ]*//g"
}
alias -g B='$(peco-git-branch)'

使い方

git checkout B とか
git merge B とか
git diff B など。

参考

pecoでgit向けの汎用的なフィルターを2つ作成してみた - Qiita
私のpeco活用事例 - k0kubun's blog
2014/06/23

[Git]リモートブランチを全て pull する

Git のリモートブランチを全て pull したいことがあっても
一つのブランチしか pull できません。
一つ一つブランチを指定するのは面倒です。
そんな時は以下のスクリプトを実行すると
origin の全てのブランチを pull することができます。

#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
   git branch --track ${branch#remotes/origin/} $branch
done

参考: Piotr Yordanov : git clone all remote branches locally
2014/06/11

Git 2.0 で pull の Fast-Forward を有効にして Homebrew で update したいじゃん?でも今までの git merge --no-ff でマージコミットしてるせいで失敗するじゃん?困るじゃん?

Homebrew の更新の度にマージコミットで中断されてめんどくさかったので
マージコミットしないようにして中断されないようにしました。
Git 2.0 がリリースされて pull が Fast-Forward にできるようになったおかげで
Homebrew の更新を監視する作業がなくなります。やったー。
[Git]GitのpullをFast-Forward onlyにする | DevAchieve で書いたように
git config --global pull.ff only で設定を変更しました。

merge の Fast-Forward は無効で、pull の Fast-Forward は強制にしました。
[merge]
    ff = false
[pull]
    ff = only

これで Homebrew の更新 brew bundle ~/Brewfile の内部の git pull でマージコミットのために
Homebrew の更新が中断されなくなるはずです。

よーし、更新するぞー!と以下のコマンドを実行!
brew bundle ~/Brewfile
fatal: Not possible to fast-forward, aborting.
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master
Error: Command failed: L2:brew update
はい、明らかに git pull でエラーになりました。
今までマージコミットしていたから Fast-Forward で pull できなくなっているんですね。

Homebrew をアンインストールしてイントールし直すしかないかなぁと思ったけど
Homebrew で入れていたものまでアンインストールされそうです。
参考: いつか見た惑星: Homebrewをアンインストールする

他にも見ていると .git を削除していたのを見つけて解決しました。
参考: Homebrew をアンインストールする方法 - present
Git の問題なので .git を削除するだけでなんとかなりそうだと。

cd `brew --prefix`
rm -rf .git
brew bundle ~/Brewfile
ということで Homebrew の履歴もスッキリして動くようになりました。

Homebrew-cask をインストールしていて Homebrew-cask のコミットもマージコミットしていたら
以下の様なエラーが出ているかもしれません。
fatal: Not possible to fast-forward, aborting.
Error: Failed to update tap: caskroom/cask
fatal: Not possible to fast-forward, aborting.
Error: Failed to update tap: caskroom/versions
以下のコマンドを実行して再インストールしてあげれば履歴が綺麗になって動きます。
brew uninstall brew-cask
brew untap caskroom/cask
brew untap caskroom/versions
brew tap caskroom/cask
brew tap caskroom/versions
brew install brew-cask
tap/untap のくだりはいらないかもしれませんが確認していないので一応記載。

追記

brew uninstall brew-cask
brew untap caskroom/cask
brew untap caskroom/versions
上記のコマンドを実行すると
brew bundle ~/Brewfile を実行した際に Homebrew-cask でインストールしたアプリケーションが
すでにインストールされていてエラーになります。

以下のコマンドで .git だけ削除したほうがいいかもしれません。
rm -rf /usr/local/Library/Taps/caskroom/homebrew-cask/.git
rm -rf /usr/local/Library/Taps/caskroom/homebrew-versions/.git
試してないので誰か同じ境遇の人で試した人がいたら結果を教えて下さい。

追記2

.git だけ削除するのはダメなようです。
あと、最新版の Homebrew で brew bundle が使えなくなったので
仕方ないのでシェルスクリプトにしました。
dotfiles/brew-update at master · wada811/dotfiles
2014/05/16

[Git]GitのpullをFast-Forward onlyにする

Git の pull / merge が --no-ff だと
自分の Mac と会社の Mac で wada811/dotfiles を更新/同期していると
以下の画像のようにマージコミットが増えていってコミットグラフも分岐してしまいます。
ただ異なる環境で編集しているだけなのに
このように本質的でないコミットが増えていくのは本意ではありません。

git pull --ff-only で実行すれば良い

上の例では確かにそうです。

しかし、 Brewfile + Homebrew + Homebrew-caskで Mac の環境構築をする | DevAchieve で書いた
HomeBrew / HomeBrew-cask の更新では
brew upgrade で内部的に git pull が実行されるので、
オプションを付けることができません。

個人的な設定により Non Fast-forward なので マージコミットを作成しようとして
コミットメッセージ入力待ちで処理が止まってしまいます。
HomeBrew / HomeBrew-cask の更新処理はそこそこ時間がかかるので
見張っていなければならないという状況は地味にストレスです。
HomeBrew / HomeBrew-cask をこちらで編集する気がないので --ff で merge したいので
デフォルトの pull の挙動を Fast-Forward only にしてしまいます。

Git の pull を Fast-Forward only にする

git config --global pull.ff only
In what cases could `git pull` be harmful? - Stack Overflow
ただし、 Git 2.0 以上から。
ちなみに Git は現在 1.9.3 が最新です。
Git 2.0 は 5月中旬以降にリリース予定らしいです。

つまり、現状では不可能でした。
Git の alias は既存のコマンドを上書きできませんし、
Git の処理自体を書き換えるつもりもないので
おとなしく Git 2.0 がリリースされるのを待ちます。

Git の merge を Fast-Forward にしてしまえば解決しますが、
ブランチのマージの際にブランチが存在したという履歴がなくなってしまうので
こちらのデメリットのほうが大きなってしまうので Fast-Forward にはしません。
参考: 「こわくない Git」というスライドを発表しました - kotas.tech

おまけ

普段 git pull していたけど
カレントブランチとは異なるリモートブランチを pull して事故ることもあったりしたので
git fetch を使うようにしようかな。
参考: Git pullを使うべきでない3つの理由 - DQNEO起業日記
2014/05/13

[Git][GitHub]GitHubにPushする際に認証失敗する

GitHub で2段階認証の設定をしてから push 時に認証が失敗するようになりました。
いつもどおり以下のコマンドを実行すると ID/PW を聞かれます。
git push origin master
Username for 'https://github.com':
Password for 'https://github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/wada811/AndroidLibrary-wada811.git/'
[Git][GitHub]やっておくと地味に便利なこと2つ | DevAchieve で .netrc に ID/PW を書いているので
聞かれるのはおかしいなぁと思いながら ID/PW を入力しますが上記のようにエラーになってしまいます。

調べてみると Git over HTTPS では Personal access token をパスワードの代わりに使えって言っています。
Two-factor Authentication
How does it work for command-line Git?

If you are using SSH for Git authentication, rest easy: you don't need to do
anything. If you are using HTTPS Git, instead of entering your password, enter
a personal access token. These can be created by going to your
application settings page.

実際に push 時にパスワードではなくアクセストークンを入力してみると問題なく push することができます。

アクセストークンの入力はめんどくさい

ssh プロトコルで push するように変更する

% git remote set-url origin git@github.com:wada811/AndroidLibrary-wada811.git
% git remote -v 
origin  git@github.com:wada811/AndroidLibrary-wada811.git (fetch)
origin  git@github.com:wada811/AndroidLibrary-wada811.git (push)
参考: Githubの2段階認証を有効にしてgitからの認証が弾かれる時の話 - 頼りないニモニック

.netrc に ID と Personal access token を書いておく

machine github.com
login wada811
password xxxpersonalaccesstokenxxx
コレが一番楽な解決方法ですね。
コレにて一件落着。
2014/05/11

dotfilesをGitHubで管理する方法

ドットファイルと呼ばれるファイル名の先頭にドットがある設定ファイル(※)を
GitHub で管理する方法について調べたので書いておきます。(※ .zshrc とか)
Mac の移行時に環境構築で dotfiles リポジトリを clone するだけで
zsh とか git とかの設定が新しい環境でもすぐに反映されるので楽チンみたいです。
イケてるエンジニアがやってるって噂なので僕もやりたいと思います。

1. dotfiles フォルダを作成する

cd ~
mkdir dotfiles

2. dotfiles フォルダにドットファイルを移す

mv .gitconfig dotfiles
mv .gitignore dotfiles
mv .vim dotfiles
mv .vimrc dotfiles
mv .zsh dotfiles
mv .zshrc dotfiles

3. ドットファイルのシンボリックリンクを作成するシェルスクリプトを作成する

cd dotfiles
vi dotfilesInstaller.sh
#! /bin/bash
ln -s ~/dotfiles/.gitconfig ~/.gitconfig
ln -s ~/dotfiles/.gitignore ~/.gitignore
ln -s ~/dotfiles/.vim/ ~/.vim
ln -s ~/dotfiles/.vimrc ~/.vimrc
ln -s ~/dotfiles/.zsh/ ~/.zsh
ln -s ~/dotfiles/.zshrc ~/.zshrc
chmod +x dotfilesInstaller.sh
./dotfilesInstaller.sh

4. dotfiles を GitHub で管理する

git init
hub create
git add .
git commit -m "Initial commit"
git push -u origin master

GitHub で管理された dotfiles リポジトリの完成

wada811/dotfiles
これでイケてるエンジニアの仲間入りですかね!

新しい Mac で dotfiles をインストールする

cd ~
git clone git@github.com:wada811/dotfiles.git
clone したら dotfiles フォルダの dotfilesInstaller.sh を以下のように実行したら移行完了です。
chmod +x dotfilesInstaller.sh
./dotfilesInstaller.sh

参考
dotfilesをGitHubで管理,vimプラグインをNeoBundleで管理する方法メモ - Programming Log

dotfiles を追加する際には dotfilesInstaller.sh に追記しなければなりませんが、
以下のように記述すれば追記の必要もないようです。
なんとなく意味はわかりますが、完全に理解しているわけではないので採用していません。そのうち調べます。
#!/bin/sh
cd $(dirname $0)
for dotfile in .?*
do
    if [ $dotfile != '..' ] && [ $dotfile != '.git' ]
    then
        ln -Fis "$PWD/$dotfile" $HOME
    fi
done
DotfilesをGitHubで管理する | fixture.jp
2014/03/16

[Git][GitHub]hub コマンドでターミナルから Pull Request を送る

[Git][GitHub]Pull Request を送る手順、あるいは GPUImage for Android に PullRequest を送った話 | DevAchieve を書く際に色々調べていたら
以前導入した hub コマンドで Pull Request を送る方法があったのでまとめてみました。
hub: github/hub
導入記事: HomeBrew を zsh で使えるようにする。ついでに hub コマンドも。
参考記事: GitHubユーザーのためのhubコマンド - Qiita

Pull Request したいリポジトリをクローン

hub clone octocat/Spoon-Knife
Cloning into 'Spoon-Knife'...
remote: Reusing existing pack: 10, done.
remote: Total 10 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10/10), done.
Resolving deltas: 100% (1/1), done.
Checking connectivity... done

作業ディレクトリに移動

cd Spoon-Knife

作業用ブランチを切る

git checkout -b Spife
Switched to a new branch 'Spife'

編集してコミット

vi README.md
git add README.md
git commit -m "Spife is spoon, it's also knife."
[Spife 0758961] Spife is spoon, it's also knife.
1 file changed, 1 insertion(+)

リポジトリをフォーク

hub fork
Updating wada811
From github.com:wada811/Spoon-Knife
* [new branch] master -> wada811/master
new remote: wada811

変更をプッシュ

git push wada811 Spife
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 388 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:wada811/Spoon-Knife.git
* [new branch] Spife -> Spife

Pull Request を送る

hub pull-request
https://github.com/octocat/Spoon-Knife/pull/1778

hub コマンドを入れたものの全然使ってなかったので積極的に使っていこう。
2014/03/15

[Git][GitHub]Pull Request を送る手順、あるいは GPUImage for Android に Pull Request を送った話

CyberAgent/android-gpuimageを使ってみたら
大きめの画像を Bitmap に変換する際に結構時間がかかっていたので
ソースコードを見てみたらPixelBuffer#convertToBitmap
上下反転を直すために全ピクセルをループ回していました。

これでは画像が大きくなるほど処理時間が長くなってしまうので
一旦上下反転した画像を Bitmap に変換して、
その Bitmap を Matrixで更に上下反転させて直しました。
change the way to convert upside down image · ec82668 · wada811/android-gpuimage

GitHub で Pull Request を送る手順

1. リポジトリをフォークする

GitHub で fork する。

2. リポジトリをクローンする

git clone git@github.com:octocat/Spoon-Knife.git

3. 作業ディレクトリに移動する

cd Spoon-Knife

4. 作業用ブランチを切る

git checkout -b Spife

5. ファイルを編集してコミットする

vi README
git add README
git commit README -m "Spife is a spoon, it is also a knife."

6. フォーク元のリポジトリの更新に追従する

6-1. フォーク元のリポジトリの登録(初回のみ)
git remote add upstream git://github.com/octocat/Spoon-Knife.git
6-2. commit 前の差分がある場合は退避する
git stash
6-3. master ブランチに移動する
git checkout master
6-4. upstream/master の変更をローカルの master に pull する
git pull upstream master
6-5. 作業用ブランチに移動する
git checkout Spife
6-6. fork 元の最新版まで rebase する (コンフリクトしたら頑張りましょう)
git rebase master Spife
6-7. stash で退避した差分を元に戻して作業を継続 (コンフリクトしたら頑張りましょう)
git stash pop

7. Pull Request 用に作業用ブランチの commit を1つにまとめる

7-1. 作業用ブランチに移動する
git checkout Spife
7-2. 作業用ブランチを元に Pull Request 用ブランチを切る
git checkout -b featureSpife
7-3. 作業用ブランチ上の fork 元からの差分を1 commitにまとめる
git rebase -i master

8. Pull Request 用ブランチを push する

git push origin featureSpife

9. Pull Request する

GitHub から Pull Request する。

詳しい説明は GitHubへpull requestする際のベストプラクティス - hnwの日記 を読んで下さい。
僕は CyberAgent/android-gpuimage が1年近く放置されていたのと、変更箇所が1ヶ所だけだったので
上の手順の 6 と 7 を省いて実行しました。
CyberAgent さんは Pull Request が来ると Travis CI が動くようです。
Travis CI を使ったことがないのでよくわからないのですが、
結果は設定ファイルがないよ!ということでその後うまく動かなかったのかエラーになりました。
Travis CI - CyberAgent/android-gpuimage - Could not find .travis.yml, using standard configuration.
他の人の Pull Request も同様に失敗しているのでこちら側由来のエラーではないはず。
Pull Request しても反応がないのだったら他で連絡しても多分反応ないし放置することにしました。

Bad End.

おまけ

Pull Request はこれで2回目だけど手順も全然覚えてないし、
git レベルが低くてコミットをまとめるとかコンフリクトを解決するとか
あまりやらないことは記事を書けるレベルに達していないので
とりあえず全体の流れだけ記事に書いてみました。
Pull Request する機会は早々ないと思いますが、これで次からは多少すんなりできるかな?

もっと git レベルを上げるために Fork しない Pull Request で色々な操作を練習して慣れていきたい。
GitHub初心者はForkしない方のPull Requestから入門しよう - QNYP Blog
2013/11/28

[HomeBrew]gitのバージョンアップをするためにやったこと

Git の diff を美しく表示するために必要なたった 1 つの設定 #gitという記事を見て、
やってみたくなったので設定してみたら diff-highlight が見つからないと言われました。

git のバージョンも古かったので git 環境のアップデートを行おうと思いました。
git は HomeBrew で入れていたので、まずは HomeBrew のアップデートを行います。

brew doctor を実行すると
You may wish to `brew unlink` these brews:

    openssl
のように言われたのですがいらないのがいくつかあったので
brew remove openssl などのように色々削除しました。

もう一度 brew doctor を実行すると
You should `brew install` the missing dependencies:

    brew install readline
のように言われたので brew install readline を実行しました。

更に再び brew doctor を実行すると
Error: Homebrew doesn't know what compiler versions ship with your version of
Xcode. Please file an issue with the output of `brew --config`:
  https://github.com/mxcl/homebrew/issues

Thanks!
のように言われていたので Xcode と Command Line Tools をアップデートしました。

ダメ押しで brew doctor を実行しましたが状況は変わらず絶望しつつも
brew update を実行すると成功したので
brew upgrade で git を含め全てバージョンアップしました。
git version 1.8.4.3

ところで目的の diff-highlight はというとパスの通ってないところにいたので
以下のコマンドでシンボリックリンクを作成して実行できるようにしました。
ln -s /usr/local/opt/git/share/git-core/contrib/diff-highlight/diff-highlight /usr/local/bin
~/.gitconfig に以下を追加しました。
[pager]
 log = diff-highlight | less
 show = diff-highlight | less
 diff = diff-highlight | less
文字列単位の差分がある場合は差分にハイライトされたように背景がつきます。
2013/06/08

[Git][Android].gitignoreを設定する

Androidアプリ作ってるよー!カメラアプリでプレビューが歪むよー!
結構大きな変更になりそうだよー!ブランチ切りたいよー!
git 使ってなかったよー! Android 用の .gitignore ってどんな設定すればいいのー?

ということで
git init
vi .gitignore
# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
.classpath
.project

# Proguard folder generated by Eclipse
proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/
gitignore/Android.gitignore at master · github/gitignore · GitHub

.DS_store とかもコミット対象になってるんだけどーって場合は
vi ~/.gitignore
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
 
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
 
# Logs and databases #
######################
*.log
*.sql
*.sqlite
 
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
git config --global core.excludesfile ~/.gitignore で設定する。
設定された確認するには以下のようにする。
git config --global --get core.excludesfile

[Git][GitHub]やっておくと地味に便利なこと2つ | DevAchieve
設定したはずなんだけどすっかり忘れてた。
2013/06/03

[zsh]Gitのコマンドやブランチ名を補完できるようにする

zshでgitのコマンドやブランチ名を補完できるようにする - QNYP Blogを見て、
記事中の動画のブランチ名がターミナルに常に表示されているせいか
何故かブランチ名をターミナルに常に表示させる方法として記憶が刷り込まれて
設定完了するまで気が付かなかった @wada811 です。

とりあえず色々補完ができたら便利そうなので設定しました。
Mac に最初から Git 入っていたと思う(とりあえず HomeBrew でインストールした記憶はない)ので
補完定義ファイルをダウンロードして設定する方式で設定しました。

まずは ~/.zsh/completion/ に補完定義ファイルを入れるためのディレクトリを作成します。
mkdir -p ~/.zsh/completion/
次は以下の2つの補完定義ファイルをダウンロードしてきます。
cd ~/.zsh/completion/
curl -O https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
curl -O https://raw.github.com/git/git/master/contrib/completion/git-completion.zsh
curl -Oでリモートファイルをローカルファイルに書き込み保存してくれるらしい。Output か。
git-completion.zsh を _git にリネームする。
mv git-completion.zsh _git
以下のような構造になっていれば良いらしい。
tree ~/.zsh/completion
/Users/wada/.zsh/completion
├── _git
└── git-completion.bash

0 directories, 2 files
と、tree とか出てきて、なにこれ便利!いいな!と思ったらbrew install treeで使えるようになります。
あとは、vi ~/.zshrcで以下のように記述してsource ~/.zshrcする。
fpath=(~/.zsh/completion $fpath)

autoload -U compinit
compinit -u
rm -f ~/.zcompdump; compinitもした方が良いらしい。

ブランチ名の補完が効くようになったので今度はブランチ名を常に表示させる設定をしたい。
2013/03/23

HomeBrew を zsh で使えるようにする。ついでに hub コマンドも。

HomeBrew を zsh で使えるようにする

MacにHomeBrewとzshを導入してみた | DevAchieveでログインシェルを zsh に
変更したは良いけど brew コマンドが使えなくなっていた…。
よくわからないが zsh-completions をインストールすれば良いらしい。

とりあえずシェルを bash に変更する。
chsh -s /usr/local/bin/bash
HomeBrew で zsh-completions をインストールする。
brew install zsh-completions
.zshrc に以下の記述を追加する。
vi .zshrc
# zsh補完を有効化
fpath=(/usr/local/share/zsh-completions $fpath)
変更した .zshrc の設定を有効にする。
source .zshrc

ついでに hub コマンドも

むしろメインの目的だった hub コマンドを使えるようにする。
hub コマンドで GitHub がもっと便利になるらしい。
hub コマンドについては以下の記事がわかりやすい。
GitHubをさらに便利に使う、hubコマンドを活用しよう! | Act as Professional - hiroki.jp

とりあえず上記で HomeBrew を zsh で使えるようにしたので以下のコマンドでインストールする。
brew install hub
インストールできたか確認する。
hub --version
git version 1.7.9.6 (Apple Git-31.1)
hub version 1.10.2
こんな感じに出ればOK!

更についでに GitHub のリポジトリを作る

すでに Git で管理されていることが条件で、まだの場合は適当に作る。
mkdir Sample
cd Sample
git init
hub create
初回はID/PWを尋ねられるので答えたらリポジトリが作られる。
そうしてできたリポジトリこちら。wada811/Sample
以下のコマンドで GitHub のリポジトリのページを開けるのでリポジトリが作成されているか確認できる。
hub browse

おわり。
2013/02/10

[Git][GitHub]やっておくと地味に便利なこと2つ

全てのリポジトリで .gitignore で無視するファイルを指定しておく

Ignoring files · github:help
git config --global core.excludesfile ~/.gitignore_global
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db

GitHub への push 時にアカウント名とパスワードを聞かれないようにする

~/.netrc にユーザ名/パスワードを書く

machine github.com
login wada811
password xxxxxxx
2012/12/30

2012年に @wada811 が読んだ技術書まとめ

2012年も終わりに近づいているので@wada811が読んだ技術書を振り返ってみようかと思います。

2012/01/14 [書評]Web標準の教科書―XHTMLとCSSでつくる“正しい”Webサイト | DevAchieve

趣味でやっていたHTML/CSSを業務レベルに上げるために基礎からおさらいしました。
最近HTML5が仕様策定完了したのでHTML5/CSS3バージョンで出して欲しいですね。
CSS3まだまだぐちゃぐちゃしてて無理かもしれませんが…。(linear-gradientとか使ってみたけど酷い…)

2012/01/15 [書評]WEB+DB PRESS 総集編 [Vol.1~60] | DevAchieve

ちょっとずつ読んでいって最近全部読み終わりました。
流石に古くかったり、やってない言語などは参考にはならなかったけど
普遍的な内容は結構勉強になった。効率が良いかと問われると微妙だと言わざるをえないけど…。
最近の号はやはり得るものはそこそこ多いので普通に買うのはありかもしれません。

2012/01/15 [書評]良いコードを書く技術 読みやすく保守しやすいプログラミング作法 | DevAchieve

ある程度良いコードを書けていればリーダブルコードを読んだ方が得るものもあるんじゃないかと思います。
原典にあたる重要性を教えてくれるのと参考文献を紹介してくれるのでそこはいいと思います。

2012/01/15 [書評]コンピュータはなぜ動くのか ~知っておきたいハードウエア&ソフトウエアの基礎知識~ | DevAchieve

2012/01/15 [書評]プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識 | DevAchieve

2012/01/15 [書評]ネットワークはなぜつながるのか 第2版<br>知っておきたいTCP/IP、LAN、光ファイバの基礎知識 | DevAchieve

なぜ〜なのかシリーズ。レビューを書いたのがこの日というだけでさすがに1日で3冊読めるものじゃない。
基本情報技術者を取るのと、ソフトウェア会社でエンジニアになるにあたって
非情報学科の大学生だった俺がとりあえず基礎知識を仕入れておかねばと読んだ本です。
まぁそこまで無駄ではなかったと思いたいです。ネットワークはちんぷんかんぷんのままだったけど…。

2012/03/31 [書評]できる逆引き Excel VBAを極める 勝ちワザ700 2010/2007/2003/2002対応 (「できる逆引き」シリーズ) | DevAchieve

内定先アルバイトでExcel VBAをやるのに読んだ本です。なかったら結構きつかったかも。

2012/03/30 [書評]よくわかるPHPの教科書 | DevAchieve

レビュー日だから日付が前後してますが、読んだのはこっちが後です。
プログラミング言語はもういくつか使っていたのでPHPでどんな事するのかの概要を知るために買ってみました。
プログラミング経験があればプロになるためのWeb技術入門
プロになるための PHPプログラミング入門で十分な内容だったかも。

2012/04/15 基本情報技術者試験を受験するまでに使った参考書3冊 | DevAchieve

基本情報技術者試験に受かったので使った参考書のレビューをしました。
改訂新版 基本情報技術者 らくらく突破 表計算はオススメだと思います。
後は過去問やっておけばなんとかなるような気がしますね。
そのくらい過去問でやってたことが形を変えて出てきます。

2012/04/21 [書評]プログラミングの宝箱 アルゴリズムとデータ構造 第2版 | DevAchieve

基本情報技術者試験に受かったはいいものの、情報科出身ではないのでアルゴリズムとデータ構造について
まともに学んだことがなくてイマイチな得点だったので勉強のために読んでみました。
アルゴリズムとデータ構造について学んだことがない人は読んでおくといいと思います。

2012/04/25 [Twitter][API]改訂で2012年5月14日までに開発者がするべきこと | DevAchieve

Twitter API ポケットリファレンスの事もちょっと書いている記事なので。
TwitterのAPIを叩くなら結構必須だと思います。かなり役に立ちました。
TwitterのAPIが1.1にバージョンアップしますが読んでおくと1.1のこともわかりやすいかもしれません。

2012/05/12 [書評]よくわかるiPhoneアプリ開発の教科書【iOS 5&Xcode 4.2対応版】 | DevAchieve

iPhoneアプリを作ることになってXcodeやInterface Builderの使い方がぜんぜんわからなかったので
そのへんを解説している一番簡単そうな本を読んでみました。
iPhoneを使っていなかったのでどんな機能、どんなパーツがあるかを知ることができたのは良かったと思います。

2012/05/09 [書評]詳解 Objective-C 2.0 第3版 | DevAchieve

iPhoneアプリを作るにはObjective-Cで書くのだけれど結構他の言語とは異なっていたので
よく理解するために読んでみました。使いこなせてはいないけど理解することはできました。
もっとObjective-CをマスターしてiPhone/Android両方できますと胸を張って言えるようになりたいです。

2012/06/02 [書評]知る、読む、使う! オープンソースライセンス | DevAchieve

昔、図書館で読んだソフトウェアライセンスの話が電子書籍になって出版されていたので読んでみました。
ソフトウェアライセンスも大事な話ですから一回は学んでおいたほうがいいですね。

2012/06/03 [書評]「プロになるためのWeb技術入門」なぜ,あなたはWebシステムを開発できないのか | DevAchieve

アプリばっかり作っていてWebとかPHPとかのあたりが全然わかってなかったのでコレで勉強しました。
コレはもっと早く読んでおきたかったというくらいの基礎知識でした。

2012/06/09 [書評]iPhoneプログラミングUIKit詳解リファレンス | DevAchieve

話はまたiPhoneに戻って今度はUIKitを解説した本です。
コレがなかったらリファレンスを読むしかなかったかもしれません。
この本はiOS4ベースで今使い物になるか不安になるかもしれませんが、
iOS5/6で追加はされましたが既存のものはそんなに変わっていないと思うので大丈夫かと思います。

2012/06/30 [書評]iPhoneアプリ設計の極意 ―思わずタップしたくなるアプリのデザイン | DevAchieve

iPhoneに限らずAndroidアプリのデザイン設計をするのにも役立つ本です。
こういうの本の内容を理解していない人がアプリって
すごく微妙だったりするので使いやすいアプリを作りたいなら必読です!

2012/07/23 [書評]達人プログラマー システム開発の職人から名匠への道 | DevAchieve

名著だと言われていたので読んでました。
実際のプログラミング、システム開発に近い所でのプログラマがどうあるべきかを説いている本です。
プログラマとしてどうあるべきか不安がある人は読んでおくといいかもしれません。

2012/07/08 日経ソフトウエアをまとめ買いしてやったぜぇ~ワイルドだろぅ? | DevAchieve

2012/08/09 [書評]日経ソフトウエア 2012年 01月号 | DevAchieve

2012/08/12 [書評]日経ソフトウエア 2012年 02月号 | DevAchieve

2012/08/20 [書評]日経ソフトウエア 2012年 03月号 | DevAchieve

2012/09/03 [書評]日経ソフトウエア 2012年 04月号 | DevAchieve

2012/09/09 [書評]日経ソフトウエア 2012年 05月号 | DevAchieve

2012/09/10 [書評]日経ソフトウエア 2012年 06月号 | DevAchieve

2012/09/16 [書評]日経ソフトウエア 2012年 07月号 | DevAchieve

2012/09/18 [書評]日経ソフトウエア 2012年 08月号 | DevAchieve

2012/09/25 [書評]日経ソフトウエア 2012年 09月号 | DevAchieve

忙しい中で効率的に最新情報を手に入れるには雑誌がいいのでは?
ということで日経ソフトウエアを購読してみました。
最初は興味が有ることが多くて良かったのだけど、
終盤は読みたい記事も少なくなりコスパ悪かったので購読やめちゃました。
他にも読みたい本あるし必要な時にちゃんとした本で情報を仕入れた方が確実な知識が手に入ると思いました。

2012/08/24 [書評]必ず結果が出るブログ運営テクニック100 プロ・ブロガーが教える“俺メディア”の極意 | DevAchieve

ネット上でよくブログ論、ブログテクニックの記事を読んでいたので目新しいことはなかったのですが、
逆にそういうのを読んでいない人は本書を読んでおくと良いかもしれません。ブログで稼ぎたい人向です。
僕はセルフブランディングと備忘録が出来ればいいのでブログで直接お金を稼ぎたいわけではないので
この本を読んでどうこうしようというのはありませんでした。技術ブログで記事量産とか無理ですし…。

2012/08/26 [書評]リーダブルコード The Art of Readable Code | DevAchieve

コードは理解しやすくなければならないという考えのもと、
理解するための時間を最短にするための実践的なテクニック集を解説している本です。
変数名には説明的な名前をつけるべきとか
どういうコメントを書くべきかとかを解説しているので読んでマスターしてください!

2012/09/04 [書評]ウェブデザインのつくり方、インターフェイスデザインの考え方。 | DevAchieve

デザインというから敬遠されがちですが、スタイリングとかデコレーション的なアートな感じではなく
設計なのでWeb系の開発者は読んでおくと良いと思います。(プログラマーもデザインを理解しておくべき論)

2012/09/11 [書評]マンガでわかるデータベース | DevAchieve

データベースの概念、基礎知識をマンガで解説した本です。
なんとなくSQLを書いたことがある人がしっかりデータベースを勉強しようと思ったら
この本から学んでいくのが良いと思います。情報処理技術者試験のデータベースあたりの勉強にも使えます。
ちなみにごっちゃになりやすい第二正規形と第三正規形の違いは連鎖があるかどうかです。(詳しくは記事へ)

2012/09/26 [書評]SQL ゼロからはじめるデータベース操作 | DevAchieve

標準SQLでRDBMSによらないSQLが書けるようになる本です。
コレ一冊でOracle, SQL Server, DB2, PostgreSQL, MySQLで動くSQLが書けるようになります。
この本をマスターしたら後のSQLは応用するだけで組めるようになるので是非マスターしましょう!

2012/10/02 [書評]プログラミングコンテストチャレンジブック [第2版] | DevAchieve

競技プログラミングをたまにやっているので勉強用にと読んでみました。
難しいこと書いてあって睡眠導入剤として優秀すぎたので読むのは諦めました…。

2012/11/03 [書評]Android SDK開発のレシピ | DevAchieve

第1版と第2版ともに読んだ本です。第2版はカメラ周りが実装にかなり役に立ちました。
その他のサンプルも役に立っているので手元において開発をしていました。

1年で書籍25冊と雑誌9冊を読んだ!

正確には書評を書いていない書籍とかあったり、つまみ読みで通して読んでない本とかあったり、
途中で読むのをやめた書籍があったりで書籍と雑誌あわせて40冊くらいだと思います。
今年読んだけど書評を書いてない本は以下のとおり。
Webを支える技術情熱プログラマー入門gitObjective-C逆引きハンドブック
PHP 逆引きレシピ平成25年度【春期】【秋期】 応用情報技術者 合格教本
12月はレビューを一冊も書いていないのですが、
これは応用情報技術者の勉強を始めたので他の本は全然読んでいないからです。

これだけ本を読んで身につけたのがObjective-CとPHPとSQLくらいでしょうか。
まだまだユニットテストとかTDDとかJenkinsでCIとかの高位な部分や、
JavaScriptやRubyなどの他の言語などをもっと学びたいです。
もっと色々なことを身につけられる機会、環境、時間が欲しいです。速さが足りない!
2012/01/27

Windows7 64bitでGit/GitHubを始める

先に言ってしまうとWindows7 64bitだからといってほとんど違いはありません。
まずはWindowsでGitを使うためにMSysGitというものをインストールする必要があります。
以下のサイトでGit-*.*.*-preview********.exeをダウンロードしします。
Downloads - msysgit - Git for Windows - Google Project Hosting http://code.google.com/p/msysgit/downloads/list

このようなアイコンのやつを実行すると
セットアップウィザードが開きます。
ライセンスに同意します。
保存場所を指定します。
空白とか日本語が含まれるフォルダに
保存するのは何か問題が起きそうで
怖いのでCドライブ直下にでも。
64bitだとContext menu entriesの方が
選択されている。違いはこれだけかと。
今インストールしているやつに
Git GUIというのも入っているから
使うならGit GUI Here のチェックが
必要になるようだ。

それとは別にTortoiseGitという
GitのGUIツールがあり、
それを使うなら同じく要チェック。
TortoiseGitとGitHubの連携を
試みたけど上手くいかなかった。

頑張ってGitコマンド覚えよう!
スタートメニューに追加
普通は"Use Git Bash only"にしておいた方が良いとか。(参考:Windows版git & TortoiseGit のインストール - Linux & Development Diaries)
チェックアウト時の改行コードの設定。
「何もしない」の一番下が良いとか。
(参考:Windows版git & TortoiseGit のインストール - Linux & Development Diaries)
セットアップウィザードの終了。

次はいよいよGitHub


Plans & Pricing - GitHub
無料アカウントでも登録してみる。
適当に登録したら
Set Up Gitに飛ばされるけど
Git のインストールは済んでいるので
Help.GitHub - Set Up SSH Keysに飛ぶ。
SSHのキー作成が初めてだったり、
何のことだかわからなかったら、
3. Generate a new SSH key.から先を
Git Bashという黒い画面のやつで実行。

GitHubにリポジトリを作る

Your Dashboard - GitHubにアクセスしたら中段に大きく、Create A Repo とかあるので、
そこに沿ってリポジトリを作成する。英語は割と無視してコマンドとスクリーンショットを真似すれば良い。
作成したら README ファイルが作成されたはずなのでGitHubから自分のリポジトリのページを開く。
READMEをクリックしてEdit this fileとかのボタンを押して編集して保存なんてことをしてみる。
ここでいくら変更してもローカル(自分のPC)のREADMEファイルには変更が反映されない。
エディタなどでも開いても中身のないファイルのままのはず。

GitHubでの変更を反映するには

pull(プル)という動作をする必要がある。
Git Bash(黒い画面のアレ)で"git pull"してやるとGitHubでの変更がローカルのリポジトリに反映される。

GitHubに変更を反映するには

ローカルリポジトリに追加
git add ファイル名

コミット
git commit -m 'コメント'

GitHubに反映
git push -u origin master

練習だと思ってREADMEにこれらのコマンドを書いてGitHubに反映してみよう!
使い始めはコマンドを忘れやすいのでリポジトリのREADMEに書いておくと便利。入門git

とりあえず超初心者なユーザーはこれで十分かも。
もっと使いこなしたかったり詳しく知りたかったら右の書籍がオススメかも。

使い始めで理解が浅いから大した解説出来なかったけど、この記事が役に立つと良いな。
ということで、Git/GitHub始めました。wada811's Profile - GitHub
AIZU ONLINE JUDGEの回答載せてます。wada811/AOJ - GitHub
良かったらフォローしてください。

タグ(RSS)