GitHubクローンとしてGiteaを使う

GitHubクローンを使いたかったので調べてみたところ次の3つが良さそうだった。

GitLabは有名どころで定番っぽいけど、インストールがめんどくさそう。GitBucketはjavaの環境が必要だけど、今つかっているLinuxにjavaの環境入れるのは手間がかかりそうだったので見送り。

というわけでGo製のGiteaを。

gitea web

とうつだけで、初回はインストールのメニューが起動し大変便利。SQLiteで運用するならこれだけでサクッとインストールが終了するのもいい。

本番環境はsuperviserに管理させていて

[program:gitea]
command=/home/git/gitea web
directory=/home/git
user=git
autostart=true
autorestart=unexpected
stdout_logfile=/home/git/log/stdout.log
stderr_logfile=/home/git/log/stderr.log

これで安定して動いているので快適

SourceTreeを触ってみた

同僚にGitを薦めているのだけど、いきなりVCSを使わせるのはハードル高いかなぁと悩んでいたら、SourceTreeの存在を思い出し、インストールしてみた。

ちょうど今開発しているアプリのgitを開いてみたけど、分かりやすい。

SoucreTree

個人的にはエディタと一緒になっているほうがいいと思うんだけど、カジュアルユーザーにはこういう方がいいのかなぁと。

あとで「chapter4の独りで使う」をSourceTreeでやってみようかと思う。

ProductName 入門Git
濱野 純(Junio C Hamano)
秀和システム / 2310円 ( 2009-09-19 )


それからこんな感じで化合物データベース表示できたら最高じゃないか。

Git+GitHubのハンズオンをやってきた

参加した皆様お疲れ様でした。

資料

僕のLTの元ネタはこれですので参考にしていただければと。

それからShizudevつくる会というもくもく会のようなものもやっていますので興味があれば参加していただければと思います。こんなかんじです

GitHub Organizationsもあるので、僕か@motmuneにアカウントを伝えていただければメンバーに追加しておきます。wikiでTODOなどを管理していますが、次回は未定なので、なんか面白そうな話題があれば投入しておくとイイかもしれません。

懇親会の時に次回の候補としてあがっていたのは

  • Titanium Mobile
  • CoffeeScript
  • クライアントサイドMVC

あたりだったかな。

TODO

  • 一度Shiz.pyかMishima.pyをやってみる
  • Haskellのつくる会をやる

ちなみにつくる会のGitHub OrganizationsはHakyllで作られています。

Magitの歴史修正機能

MagitのRewritingがよく分からなかったので、色々触っていたらなんとなく理解したけどgit rebase -iとどこが違うんだろう?

ちなみに、M-x magit-statusを毎度叩くのも飽きたのでC-x gに割り当てました。

(global-set-key (kbd "C-x g") 'magit-status)

Rewritingの使い方

まずはl lでログリストを出して、修正の起点のコミットログでr b(begin)を押す。

すると、magit-statusでそれ以降のコミットログがpendingされたコミットになっているので、修正したい順番にAを押していく。きちんとコミットされるとpendingのステータスが*(未使用)から.(使用済み)に変わる。r .とかr *でも状態変更はできる。

これはgit rebase -iでコミットログの順番を変えるのとほとんど一緒だと思う。

まとめてコミットしたい場合はaをつかえばいいんだけど、コンフリクトしたりしてなんか挙動がいまいち掴みきれていない。

最初の方はなかなか思い通りにいかなくて最初からやり直したいことが多いが、そういう場合に破棄するのはr a(abort)でOK。

慣れるまではcloneしてテスト用のリポジトリで作業してみて、OKだったらもとのリポジトリで修正すんのがいいのかもしれない。

Reflogの使い方

l hでReflogが出るのでAを押すとコミットが取り込まれる。

ProductName 実用Git
Jon Loeliger
オライリージャパン / 2940円 ( 2010-02-19 )


Magit初心者が絶対に覚えておくべきコマンド

Git初心者が絶対に覚えておくべきコマンドをMagitでやるには。

git-commit --amend

通常コミットするときはステージに上った状態でcを押しコミットログのためのメッセージを編集した後C-c C-cします。

ここでC-c C-cではなくC-c C-aするとamandのための編集画面になります。

Amend: "yes"
-- End of Magit header --
second commit # コミットログメッセージ

あらためてC-c C-cすればamendされます。

git-reset

magit-statusしてステータス画面を出したあと、Headの行にカーソルをあわせてxを押す。

デフォルトは git reset HEAD^となります。

ログ画面でxを押すと対応するとこまでresetされます。

git-reflog

magitの場合、元サイトのようなミスは起こりにくいと思いますが。

magit-statusでr bを押すとrewriteがはじまるので、aとかAとか押したりして歴史の修正をしていく。

実際やってみたけど、ちょっとややこしいのでRewritingのセクションをきちんと読んだほうがいいのか。

あとでちゃんと理解しておこうっと。

Git+GitHubのハンズオンをやります(20120901@静岡)

GitとGitHubの入門的なハンズオンをやります。独りで一通り使えるようになることを目指す内容になっています。

Gitについて

  • 基本コマンド(ハンズオン)
  • タグ、ブランチについて
  • タグ、ブランチ周りのコマンド(ハンズオン)
  • 分散バージョン管理について
  • リモート周りのコマンド

GitHubについて

  • 同一ホスト内で clone, pushしてみる
  • アカウント登録
  • SSHの設定
  • Git入門でつくったやつをpushしてみる
  • GitHubでのforkとcloneの違いと使い分け
  • GitHub pagesの説明
  • issueとpull reqに関して(やらないかも)

既に枠は埋まっていますが、キャンセルがぼちぼち出ているので登録しておくといいかもしれません。懇親会のみの参加もおそらく可だと思います。

今回はweb系(デザイナー?)っぽい方々がちらほら参加されているのでちょっと楽しみですね。

ProductName 入門Git
濱野 純(Junio C Hamano)
秀和システム / 2310円 ( 2009-09-19 )


実用Git

僕のGitバイブルは入門Gitなのだけど、マージ戦略の突っ込んだとことかなんのためにgit init --bareがあってどういう意図なのかとかそういうあたりが足りないなぁと思ったので実用Gitも読んでみた。

ProductName 実用Git
Jon Loeliger
オライリージャパン / 2940円 ( 2010-02-19 )


ファイルをどう管理しているかがわかりやすかったのとマージ戦略が厚くて良かった。GitHub使っていてPullリクエスト送ろうと思うと、マージのあたりは非常に気を使うからねー。

実用Gitだけだと、入門者は確実においていかれるので入門Gitは手放せないよね

ProductName 入門Git
濱野 純(Junio C Hamano)
秀和システム / 2310円 ( 2009-09-19 )


GitHub PagesでSphinxを使う

GitHub Pagesを使って文書を管理したら快適そうだったので試してみた。

ゆるふわHaskellというものを書いてます。

Haskellで人工無脳をつくってみたいとか、PLEAC埋めたいとか、Invent with Pythonを書きなおしてみたいとか色々あったのでGitHub+Sphinxでやりたくなったというのがモチベーション。

基本的な流れとしては

  1. gh-pagesというブランチを作る
  2. sphinxtogithubというエクステンションを入れる
  3. Sphinxで文章を書く
  4. make htmlする
  5. cp -pr _build/html/* ./でビルドされたhtmlをカレントディレクトリに移動する
  6. commitしてpushすると公開できるようになる

となるが、4-5のステップはもうちょっとスマートにできると思う。ちなみに参考にしたのが以下のサイトだけど、オフィシャルのヘルプには一通り目を通しておくといいと思う。

GitHub+Sphinxのよさそうなところ(要検証)

  • Issueの管理が楽
  • pull requestで変更を取り込める
  • コードの管理するよりソーシャルなやり取りの敷居が低そう

Git+GitHubのハンズオンをやります

ちょっと先の9/1の話ですが、静岡のB-nestでやるので興味があれば参加するといいと思います。

Gitの入門的な内容から、GitHubの簡単な使い方ぐらいをやる予定です。Gitを独りで使えればGitHubも快適に使えるので、とりあえずこんな感じでいいかなと。誰かがグループ開発のさわりを入れてくれるんだったら歓迎、個人的に興味あるし(職場で独りで開発なんでグループ作業ってのを経験したことがない)。

あとLTが幾つか入るみたいです。僕も空気を読まずにmagitの話でもしようかしら。

ProductName WEB+DB PRESS Vol.69
大塚 弘記
技術評論社 / 1554円 ( 2012-06-23 )


ProductName 入門Git
濱野 純(Junio C Hamano)
秀和システム / 2310円 ( 2009-09-19 )


git push origin master, checkout -t -bとcheckout -bの違い

さくらのVPSを移行する過程でVPSで管理していたGit リポジトリを移す作業を行う必要があった。

移行先のリポジトリは

git init --bare

で作成してローカルのリポジトリの.git/configのurlを新しいサーバーのIPアドレスに修正して

git push

だとエラーになるので明示的に

git push origin master

と打ってやる。originとmasterはGit超入門と.git/configを眺めてればわかったんだが、なぜ明示しないといけなかったのかがいまいち理解できてない。

これが一点。

分からないので、これは入門Gitだなぁとパラパラとめくったら、13章の「リモートリポジトリの定義」のところに色々書いてあった。

以前読んだ時はよく分からなかったのでとばした章だったかもしれんが、今読んだら発見が色々あってよかった。

ただ、トピックブランチの切り方のところで、ローカルで開発の時には

git checkout -b feature

だったと思うが、リモートをクローンした場合

git clone repo
git checkout -t -b fearure origin/master

ってするのがよくわからないってのがもう一点。

rebaseするときに都合がいいんだろうなぁ位しか思いつかないんだが。

ProductName 入門Git
濱野 純(Junio C Hamano)
秀和システム / 2310円 ( 2009-09-19 )


Git沼というかGit奥が深い症候群に陥りつつあるのであった。