Help us understand the problem. What is going on with this article?

不安なくOrphanブランチを作る方法 by GitHub(リモートgit)

私はOrphanブランチが大好きだ。ドキュメントや資料やウェブページなどはぜひそこで管理していってほしい。

いきなりやり方

クローンして checkout --orphan するのではなく git remote add origin して git push origin master:orphan-doc しちゃうと楽。

例) project というディレクトリとリポジトリで運用しているところに orphan-doc というブランチを追加する

$ git clone https://github/project.git # これで projectディレクトリができ、普段はこっちで作業
$ mkdir ./project-orphan-doc # ここがドキュメント用ディレクトリ
$ cd project-orphan-doc
$ git init
$ git remote add origin https://github/project.git
$ touch document.doc
$ git add .
$ git commit -m '1st orphan-doc commit'
$ git push origin master:orphan-doc  # ←これでリモートにはブランチ名が orphan-doc でプッシュできるのでエラーがおきない

Orphanブランチとは

Orphan とは孤児のこと。普通gitリポジトリといえば基本となるコミットがあるそれを親として差分で管理していく。ブランチをわける、切るというのはこの親から枝分かれすることを指す。親と差分が基本な構造な中、突如として「何も親にもたないブランチ」を実は作ることができる。これが Orphanブランチ である。

スクリーンショット 2017-12-08 15.12.27.png

この赤矢印に注目。どのブランチを親にももたないブランチが突如現れている。

動機

本質の管理対象であるソースコードをgitリポジトリで管理する以外に、管理したいドキュメントや他リソースというのは必ずでてくる。仕様書やドキュメント、宣伝ページ、密接なデプロイツールなどなどである。これらを別リポジトリ、別エクセル、別フォルダ・・・などで管理してもいいが、だいたいでてくるのは「これ、どの時点の話だ?」というのがわからなくなってしまうという問題である。更新日付を目で追いかけ、脳でソートしながら追いかけないといけないのは大変だ。

これの1つの解決策として「それも同一gitで管理しちゃえばいいじゃん?」という策があるが、自動テストのある昨今、本質の管理対象以外の更新でブランチが伸びることは非常に業務コストがあがってしまうことがある。つまり、余計なコミットはmasterブランチには入れたくない。

そこで出てくるのが「ドキュメント専用ブランチの運用」である。こういったときにOrphanブランチは用いられる。

問題

Orphanブランチを作成するのは実は結構ややこしい。その手順は簡単で作業ディレクトリで git checkout --orphan でブランチはできるが、孤立したブランチを作ったはいいものの、作業ディレクトリに既存ファイルが残っているので git rm -rf . しなくてはならない。

これがコワイのである。

恐怖を克服したとしても、ブランチを移動するとファイルがどーんと消えたり復活したりでとてもコストがでかい。

運用

そういうのがコワイので、運用としては例えば『project』というリポジトリだと

project
project-orphan-doc

とこのように2つのディレクトリに分けて運用し、各ディレクトリではorphanブランチにはスイッチしないという運用をしている。前述したようなタイミングを調べるときにはremoteを経由してfetchしたりし、ツールで確認する。

やり方

最初に書いた「いきなりやり方」をご参照ください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした