Git と OneDrive 等のクラウドストレージを併用する

ブログに書きたいネタとか雑多なメモを管理する際、Git によるバージョン管理と、クラウドストレージによる同期を併用したくなる。

具体的には、こんなことがしたい:

  • コミットに至らないメモ書きの段階では、クラウドストレージで同期させたい
    • ついでにそのメモ書きは、タブレット等の複数の端末から更新したい
  • ブログで記事を公開してからの差分を Git で管理

プライベートのリモートリポジトリ代わりに、ベアリポジトリを OneDrive に共有する話は見たことある (これ とか これ) のだが、私がやりたいこととはちょっと違うんだよな。
そもそも、 Microsoft 買収後に GitHub で無制限にプライベートリポジトリ作れるようになったので、 Git リポジトリの共有自体は GitHub とかで良いので。

以前、ローカルリポジトリをまるごと OneDrive で共有させてみたのだが、複数の端末で編集すると同期の競合が発生しまくってしまった。
特に .\.git ディレクトリ内でコンフリクトすると後処理が面倒くさすぎる。

どうにかならんもんか。

.\.git ディレクトリだけ同期除外

先に答えを言ってしまうと、クラウドストレージでの同期で特定のディレクトリの同期を除外させれば良い。

.\.git ディレクトリ内のコンフリクトが面倒なら、 .\.git ディレクトリだけ同期を除外させればいじゃない… という精神だ。

ただ、 OneDrive では一筋縄ではいかなかったので、少々トリッキーな方法を採っている。

そのやり方を、 Windows 上の OneDrive を例に紹介する。

1つ目の端末

続きを読む

git-flow で 「リリースを完了」 「ホットフィックスを完了」 させようとすると、 master にマージされずに失敗する

Git における、有名なブランチの運用モデルのひとつに、 "A successful Git branching model" (日本語訳) というものが存在する。

内容については、「サルでもわかる Git 入門」さんの、以下の解説がわかりやすい。

上記のブランチの運用モデルを簡単に行うための git-flow 拡張が存在し、 Git for Windows 2.5.3 以降に標準で同梱されている。
また、 Git GUI クライアントの SourceTree では、 上記の git-flow が使いやすい UI にまとめられている。

そんな便利な git-flow だが、あるときふと気づいたら、私の手元の環境でうまく動かなくなってしまっていた。

具体的には、
リリースブランチ を完了させた場合、
160625_1
本来であれば、以下のように release/* の内容が masterdevelop ブランチにマージされて タグが作成されるはずが、
160625_2
なぜか master ブランチにマージされずに、 変な場所に タグ が作成されてしまう。
160625_3

リリースを完了させた時だけではなく、ホットフィックスを完了させた場合も同様になる。

不便きわまりない!

原因は 身に覚えのない git config の設定

続きを読む