= gitの文字化け =
gitで日本語したファイル名は文字化けする。
{{{
$ git log --summary
...
create mode 100644 "\343\203\206....txt"
}}}
下記のように設定すると文字化けしなくなる。
{{{
$ git config --global core.quotepath false
$ git log --summary
...
create mode 100644 テスト.txt
}}}
その他のノウハウは、
http://www.atmarkit.co.jp/fjava/rensai4/devtool26/devtool26_1.html
を参照。
= gitで認証エラー =
gitをサーバにプッシュしようとすると、下記のようなエラーが出ることがる。
{{{
# git push
(gnome-ssh-askpass:23903): Gtk-WARNING **: cannot open display:
}}}
OSをGUIモードでインストールした場合、認証をgnome-ssh-askpassを利用して行おうとしてウィンドウを起動することがある。その場合、上記のようなエラーが発生する。この場合、下記のように設定してやればよい。
{{{
# unset SSH_ASKPASS
}}}
== 不正な証明書でのSSL接続 ==
オレオレ証明書でSSL接続すると、エラーになる。オレオレ証明書で、
{{{
$ git config --global http.sslVerify false
}}}
= gitのtips =
== git addで追加したファイルのキャンセル ==
{{{
$ git rm --cached xxx
}}}
でaddで追加したファイルをコミット対処から除く。
== コミット前に戻りたい ==
コミットをやり直したい場合は、reflogを使って次のようにする。(変更したファイルはそのまま)
{{{
$ git reflog
8855c0b HEAD@{0}: commit: test2.
b2e884f HEAD@{1}: commit (initial): test1.
$ git reset HEAD@{1} // test2のコミットを取消
Unstaged change after reset:
M test
$ git log
...
test1.
}}}
resetを行うときに
{{{
$ git reset --hard XXX
}}}
のようにすると、ファイルの変更内容も取り消すことができる。
== コミットのやりなおし ==
間違えたユーザ名でコミットしてしまったときにコミットをやり直すコマンド。
{{{
$ git commit --amend --reset
}}}
== リモートブランチの作成 ==
リモートに作成したいブランチ上で
{{{
$ git push origin remote-branch-name
}}}
== ブランチの削除 ==
ローカルブランチの削除
{{{
% git branch -d mybranch
}}}
リモートブランチの削除
{{{
% git push origin :mybranch
}}}
== リモートブランチのプル ==
.git/configに
{{{
[remote "upstream"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/upstreamer/upstream.git
}}}
などと記述し、
{{{
$ git pull upstream master
}}}
とする。ブランチを指定する場合は、masterを置き換える。
== GitのSmart HTTPとGitWebの混在 ==
例えば、http://hostname/git にWebブラウザでアクセスするとリポジトリを閲覧でき、gitコマンドでアクセスするとリポジトリにアクセスできるようにしたい。
CentOSでは、gitwebパッケージをインストールし/etc/httpd/conf.d/git.confファイルを次のように記述する。下記の例は、/var/lib/git以下にGitリポジトリが複数ある場合である。
{{{
SetEnv GIT_PROJECT_ROOT /var/lib/git
SetEnv GIT_HTTP_EXPORT_ALL
Alias /gitweb.css /var/www/git/gitweb.css
Alias /gitweb.js /var/www/git/gitweb.js
Alias /git-favicon.png /var/www/git/git-favicon.png
Alias /git-logo.png /var/www/git/git-logo.png
Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
info/refs | \
objects/info/[^/]+ | \
git-(upload|receive)-pack))$" \
/usr/libexec/git-core/git-http-backend/$1
ScriptAlias /git /var/www/git/gitweb.cgi
}}}
また、/var/www/git/gitweb.cgi にGitのルートディレクトリの設定を行う。
{{{
our $projectroot = "/var/lib/git";
}}}
== httpdでの匿名によるcloneのみ許可 ==
クローンは匿名で、プッシュは認証を行ってしたい場合、git-receive-packへのアクセスに認証が必要にするようにする。
具体的には、下記のようにhttpd.confへ記述する。
{{{
AuthType Basic
AuthName "Git Repository"
AuthUserFile /etc/httpd/httpd.password
Require valid-user
}}}
= mercurialの文字化け =
Mercurialで日本語のファイル名を扱うと、LinuxとWindowsで正しく共有できない。今のところ解決策は、Windows上ではcygwinのmercurialをutf-8環境で使えば解決できる。
{{{
$ LANG=ja_JP.utf-8
$ hg ....
}}}
fixutf8エクステンションを利用するとこの問題は解決できる。
= トピックブランチのなめの付け方 =s
* OpenStack
* bp/12345 BluePrint(新機能の提案)
* bug/12345 バグ
* jQuery
* 1.8/#12345/ajax
* 1.8/#12356/CallBacks
* 次にリリースするバージョン番号/Issue ID/対応するモジュール名