Skip to content

Tips for git in enja oss

Layzie edited this page Jan 7, 2013 · 4 revisions

enja-ossでのGit運用Tips

こんな感じで、gitの運用をするとenja-ossでの活動がスムーズになるかもしれないというTipsです。絶対にこうしろという強制力はありませんが、ご参考まで。

git remoteの活用

enja-ossのmasterリポジトリと、自分がforkしたリポジトリとで簡単に同期を取る為に、以下のようにremoteを設定すると楽になります。

git remote add upstream [email protected]:enja-oss/Backbone.git
git remote
# 以下のように表示されます
# origin
# upstream

これによりenja-ossのリモートリポジトリがupstream、自分のforkしたリポジトリが(自動的に)originとなります。 運用フローとしては以下のような感じになります。

git checkout master
git pull upstream master
git push origin master

これにより

  1. enja-ossリポジトリからmasterブランチをローカルリポジトリにpull
  2. ローカルリポジトリでpullしたmasterブランチを自分のforkしたリモートリポジトリにpush

という感じでスムーズにmasterブランチを更新することができるようになります。

トピックブランチの使用

上記のように作業すると、masterブランチで作業をしていると、変にmergeが起きたりするので不便です。 また仮にそうでなくても、masterブランチでpull request送ってから作業→pushすると、pull requestに commitが追加されていくので、今回のpull requestに無関係のcommitが混ざってしまう恐れもあります。

そこで、masterブランチはあくまでもenja-ossリポジトリとの同期としておき、自分の作業分では都度ブランチを 切っていくようにすると便利です。

git checkout -b Event
#作業
git add doc/Event.md
git commit -m "translate"
git push origin Event

このトピックブランチの作業が終わるまでは、特にmasterブランチとmergerebaseなどしなくても どうせpull requeset送って全て採用されればmasterに統合されるので放っておいても問題ないと思います。

pull requestが採用され、トピックブランチの作業が全て終了したら、ブランチの削除してしまって問題ありません。

git checkout master
git branch -D Event
git push origin :Event

最近GitHubに、pull request終わったら「このブランチ削除する?」みたいなボタンが出来たので、 ボタンを押してから

git checkout master
git pull origin --prune

でも同じようにブランチが削除されます。

original ディレクトリについて

BackboneUnderscoreのリポジトリ内には originalというディレクトリがあると思います。

こちらは、翻訳時点でのそれぞれの元の documentcloud のリポジトリを保存しているものになります。GitHubでoriginalディレクトリのリンクをクリックすると元のリポジトリに飛ぶようになっています。

enja-ossのリポジトリの上記のリポジトリをgit cloneした時にはディレクトリは無いと思いますが、以下の操作をする事により、オリジナルのディレクトリ構成やブランチなどがローカルリポジトリに再現されるようになります。

git submodule init
git submodule sync
git submodule update
cd original
git checkout master
git checkout gh-pages

出来たばかりのoriginalディレクトリではどのブランチにもなっていないので、masterブランチやgh-pagesブランチをチェックアウトしてください。翻訳に使うのにはgh-pagesブランチを参考にすると良いと思います。