Version 30 (modified by mitty, 11 years ago) (diff) |
---|
Git
- Git - Book
- 3.3 Git のブランチ機能 - ブランチの管理
現在作業中のブランチにマージ済みのブランチを調べるには git branch –merged を実行します。 まだマージされていない作業を持っているすべてのブランチを知るには、git branch --no-merged を実行します。
- 3.3 Git のブランチ機能 - ブランチの管理
- Git入門 - トップページ
- Gitの基礎練習
- Subversion ユーザーが Git を使ってみた (基本操作編) - まちゅダイアリー(2010-05-06)
- Subversion使っている人間としては分かりやすい
- ファイルシステムとしての Git - 言語ゲーム
- git-cherry-pickを掘り下げる - idesaku blog
- transitive.info - Git 考え方
- キャレットとチルダ
- HEAD^とHEAD~の違いなど
- Pro Gitと入門Gitと入門gitでGitの復習 HEADのキャレットとかチルダとか補講編 - kk_Atakaの日記
- こちらも分かりやすい
- What's the difference between git clone --mirror and git clone --bare - Stack Overflow
- 通常のclone, clone --bare, clone --mirrorの違いについて詳しく書かれている
- gitのbareリポジトリのバックアップをとる - 馬鹿と天才は紙一重
バックアップ用のリポジトリを作るのであれば--bareではなく--mirrorというオプションをつけます。
$ git clone --mirror yamucha chaoz
git-pullをすると、chaozはbareリポジトリだから管理ファイルしか存在しないためにmergeができないよと怒られます。なのでここではgit-fetchをしないといけません。
- git clone --mirror - Humanity
--mirrorは実際これと同じことをしてるっぽい(たぶん)
$ git clone --bare {uri} $ cd {dir} $ git config remote.origin.fetch '+refs/*:refs/*' $ git config remote.origin.url $uri $ git config remote.origin.mirror true
- Duplicating a repository · GitHub Help
$ git clone --bare https://github.com/exampleuser/old-repo.git $ cd old-repo.git $ git push --mirror https://github.com/exampleuser/new-repo.git
- Gitでexportするときはgit archiveとgit checkout-indexのどちらがよいか - DQNEO起業日記
masterブランチをエクスポートしたいとします。
mkdir /tmp/foo git archive master | tar -x -C /tmp/foo
(必ず先に空のディレクトリを作っておきましょう。)
git via https
- どぶお/開発しよう!/Gitクックブック - BioKids Wiki
GitHubにHTTPSでアクセスするとSSL証明書の検証に失敗する
この場合のように新たな証明書をOpenSSLへインストールする方法について解説したページが見つからなかったのでメモしておきます。
- git config --global http.sslCAPath "C:\Program Files (x86)\Git\ssl\certs"
[http] sslCAPath = C:\\Program Files (x86)\\Git\\ssl\\certs
- 手動で追加する場合、以下のように書いてもよい
[http] sslCAPath = 'C:/Program Files (x86)/Git/ssl/certs'
- 手動で追加する場合、以下のように書いてもよい
- 証明書の用意
- $ openssl x509 -inform der -in cacert.cer -out cacert.pem
- $ mv cacert.pem openssl x509 -hash -noout -in cacert.pem.0
- $ ls -l
total 8671524 -rw-r--r-- 1 mitty mitty 1326 Jun 8 02:47 5391e9e0.0 -rw------- 1 mitty mitty 937 Feb 19 10:08 cacert.cer
- C:\Program Files (x86)\Git\ssl\certs にコピー
- うまくいかない
- root証明書ではなくサーバ証明書も追加してみたがだめ
- C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt にBase64形式(この場合上記5391e9e0.0の中身)で追記する方法
でもだめ- この方法では問題なく独自root証明書が使える
いずれも、Unknown SSL protocol error in connection to ... となる- SSL通信で使用できるプロトコルを制限したため、接続に失敗していた模様
- SSL certificate problem: unable to get local issuer certificateとなる
- git config --system --unset http.sslCAinfo としてもNG
- UACのために、C:\Program Files (x86)\Git\etc\gitconfigではなく%LOCALAPPDATA%\VirtualStore\Program Files (x86)\Git\etc\gitconfigに書き込まれる点に注意
- git config --global http.sslCAPath "C:\Program Files (x86)\Git\ssl\certs"
- git - SSL certificate rejected trying to access GitHub over HTTPS behind firewall - Stack Overflow
$ env GIT_SSL_NO_VERIFY=true git clone https://github...
git-svn
- Is there an advantage to using --no-metadata in git svn clone? - Stack Overflow
This option is NOT recommended as it makes it difficult to track down old references to SVN revision numbers in existing documentation, bug reports and archives.
- git-svnでSVN上の複数のブランチやtrunkを扱う方法 - Hello, world! - s21g
- Converting svn to git, how to get the branches not to be just remote in the svn repo? - Stack Overflow
convert svn repos to git
- trunk/tags/branches -> -s オプションで拾える
- vendor -> 手動でconfig --addしてfetch
- リモートブランチをローカルブランチへ変更する
- mitty@test:~/works$ git svn init -s http://lab.mitty.jp/svn/lab/ lab
Initialized empty Git repository in /home/mitty/works/lab/.git/
- mitty@test:~/works/lab (master)$ cat .git/config
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [svn-remote "svn"] url = http://lab.mitty.jp/svn/lab fetch = trunk:refs/remotes/trunk branches = branches/*:refs/remotes/* tags = tags/*:refs/remotes/tags/*
- mitty@test:~/works/lab (master)$ git config --add svn-remote.svn.fetch "vendor:refs/remotes/vendor"
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [svn-remote "svn"] url = http://lab.mitty.jp/svn/lab fetch = trunk:refs/remotes/trunk branches = branches/*:refs/remotes/* tags = tags/*:refs/remotes/tags/* fetch = vendor:refs/remotes/vendor
- mitty@test:~/works/lab (master)$ git svn fetch
Checked out HEAD: http://lab.mitty.jp/svn/lab/trunk r204 creating empty directory: TipAndDoc/tools/trac/plugins
- mitty@test:~/works/lab (master)$ ls -1F
Commentary/ Dev/ misc/ TipAndDoc/
- mitty@test:~/works/lab (master)$ git tag -l
- mitty@test:~/works/lab (master)$ git br -a
* master remotes/tags/r89-trunk remotes/tags/snuploader_name remotes/tags/snuploader_name@29 remotes/tags/snuploader_name@36 remotes/tags/twitter remotes/trunk remotes/twitter-0.1 remotes/twitter-0.1@44 remotes/twitter-0.1@65 remotes/twitter-0.1@66 remotes/vendor
- mitty@test:~/works/lab (master)$ ls -1F
- mitty@test:~/works/lab (master)$ mv .git/refs/remotes/tags/* .git/refs/tags/
- mitty@test:~/works/lab (master)$ rmdir .git/refs/remotes/tags/
- mitty@test:~/works/lab (master)$ mv .git/refs/remotes/* .git/refs/heads/
- mitty@test:~/works/lab (master)$ rmdir .git/refs/remotes/
- vim .git/packed-refs
:%s/refs\/remotes\/tags/refs\/tags/g :%s/refs\/remotes/refs\/heads/g
- リポジトリがある程度以上の大きさの場合、必要になる
- .git/packed-refs が存在しない場合はskipしてよい模様
- mitty@test:~/works/lab (master)$ git tag -l
r89-trunk snuploader_name snuploader_name@29 snuploader_name@36 twitter
- mitty@test:~/works/lab (master)$ git br -a
* master trunk twitter-0.1 twitter-0.1@44 twitter-0.1@65 twitter-0.1@66 vendor
- mitty@test:~/works/lab (master)$ git co vendor
Switched to branch 'vendor'
- mitty@test:~/works/lab (vendor)$ ls -1F
DrRacket/ GeSHi-1.0.8.9/ lxc/ OCaml/ SnUploader/ TipAndDoc/ trac/ twitter/ ubuntu/ utvpn/ vmware/
- mitty@test:~/works/lab (master)$ git co vendor
git-http-backend
- git-http-backend(1)
- nginxでgitリポジトリの公開 - Smart HTTPを試してみた - 逆襲のWebエンジニア
- toofishes.net - Git smart HTTP transport on nginx
- Howto Nginx + git-http-backend + fcgiwrap (Debian Squeeze) - Server Fault
- fastcgi_passは最初の方にあっても良い模様
- fastcgi_param SCRIPT_FILENAMEはかならずinclude fastcgi_paramsよりも先に記述しないとダメ(以下の様に意図しない場所へchdirされエラーになる)
FastCGI sent in stderr: "Cannot chdir to script directory (/usr/share/nginx/www/git/test.git/info)"
- Ubuntu 12.04では、fcgiwrapパッケージを導入すると/var/run/fcgiwrap.socketが自動的に作成される
prompt
- bash
- Gitを使い始めたらやっておきたい便利な設定いろいろ : アシアルブログ
- source:lab/trunk/TipAndDoc/.gitconfig, source:lab/trunk/TipAndDoc/.bashrc
github
- 初めてPull Requestをマージしてみた - daicham blog
- A-Liaison BLOG: github で pull request をされたとき・するときの手順
- GitHubへpull requestする際のベストプラクティス - hnwの日記
ここで大事な点を強調しておきますが、絶対にmasterブランチで作業してはいけません。また、masterブランチからpull requestを送るのもいけません。必ずpull requestのための別ブランチから送るようにしましょう。
- documentation - Embedding images inside a GitHub wiki (gollum) repository? - Stack Overflow
github:mojombo/gollum-demo/blob/master/Mordor/Eye-Of-Sauron.md
gitweb
- github:kogakure/gitweb-theme
- gitweb + Nginx を使ってgitリポジトリをWEBで見られるようにする - Wait at a Street corner
- gitoliteとgitweb on nginx を連携させたメモ - ゆどうふろぐ
- Running gitweb in FastCGI Mode | 603
- Gitweb on Centos behind Nginx with init script.
- Using git-web with nginx | Jeff's musings
- 以下の様に設定するのがすっきりすると思われる
location ~ /gitweb/(.*) { fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_param SCRIPT_FILENAME /usr/share/gitweb/gitweb.cgi; include fastcgi_params; fastcgi_param PATH_INFO $1; }
- /gitweb/(.*)を/gitweb(/.*)とすると、リンクが正常に生成されないので注意