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 <Directory /var/www/git> Options +ExecCGI AddHandler cgi-script .cgi DirectoryIndex gitweb.cgi </Directory> 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へ記述する。
<LocationMatch ^/git/.*/git-receive-pack$> AuthType Basic AuthName "Git Repository" AuthUserFile /etc/httpd/httpd.password Require valid-user </LocationMatch>
mercurialの文字化け
Mercurialで日本語のファイル名を扱うと、LinuxとWindowsで正しく共有できない。今のところ解決策は、Windows上ではcygwinのmercurialをutf-8環境で使えば解決できる。
$ LANG=ja_JP.utf-8 $ hg ....
fixutf8エクステンションを利用するとこの問題は解決できる。
トピックブランチのなめの付け方 =s
- OpenStack?
- bp/12345 BluePrint?(新機能の提案)
- bug/12345 バグ
- jQuery