はじめに gitのsubmoduleを使う機会があったのですが、間違えて追加して再追加するときに、いろいろ戸惑ったので、まとめました。 submoduleの追加
はじめに gitのsubmoduleを使う機会があったのですが、間違えて追加して再追加するときに、いろいろ戸惑ったので、まとめました。 submoduleの追加
高知工科大 Advent Calendar 2016 4日目の\ヒッカリ~ン/です ネタ無いな~と思ってたんですが、最近gitのライブラリ管理で困ってる人を見かけたのでしょうがないからsubmoduleとsubtreeのまとめ記事を書こうと思います。 とか偉そうなこと言ってますが全部合ってる自信ないので間違ってたらマサカリコメント入れてください。(できれば枕投げコメント程度にやさしくお願いします) git submoduleは外部のgitリポジトリを自分のgitリポジトリのサブディレクトリ取り込み、その特定のcommitを参照するものです。 とりあえずやってみましょう。 submoduleの追加 例えば、現在fooというリポジトリのルートにいるとして、lib/barフォルダにbarというリポジトリを取り込みたいとします。
Gitのサブモジュール内で何か変更などがあると親リポジトリ側でコミットができません。解決方法は主に2個あるようです。実際に再現させつつ、その解決方法を紹介します。 こんにちは。サービスグループの武田です。 バージョン管理システムであるGitはソースコードなどをリポジトリという単位で管理します。さらにGitにはサブモジュールという機能があり、これを利用することで別のリポジトリを自身のリポジトリ内で再利用できます。 とても便利なサブモジュール機能なのですが、サブモジュール内で何か変更などがあると親リポジトリ側でコミットができません。たとえばサブモジュール内でビルドなどをして成果物が生成され、それが.gitignoreに書かれていない場合などが該当します。とはいえ、サブモジュールでそれをコミットするわけにもいきません。 解決方法は主に2個あるようです。実際に再現させつつ、その解決方法を紹介します
みなさんgitのsubmoduleって理解して使ってますか? 親プロジェクトをpullしたら、submoduleがmodifiedになって混乱してgit addして...あばばばば。みたいな事ないですか? 私はsubmoduleがなかなか理解できずに結構苦労しました。^^; ブランチ単位で管理する通常のリポジトリと違い、submoduleはCommitID単位で管理するというのが一番理解しにくい部分だと思います。 今回は、プロジェクトにsubmoduleを追加、更新、削除の動きを更新を掛ける側のプロジェクトと更新を受け入れる側のプロジェクトの2つの視点から追いながら、CommitIDで管理するとはどういう事なのかを解説していきます。 (結論だけ見たい人は末尾のまとめへ) 準備 「submoduleを開発する役割のプロジェクト test_app_A」と「submoduleを取り入れる役割のプ
B! 70 0 0 0 Gitのsubmoduleがいつもイマイチ良くわからなくなるので 自分なりのまとめ。 レポジトリにsubmoduleの追加 submoduleのあるレポジトリをcloneする submoduleの更新 submoduleの削除 ignore = dirty Submoduleのプロトコルの変更 レポジトリにsubmoduleの追加 git submodule addで追加。 $ git submodule add [email protected]:rcmdnk/evernote_mail.git ./submodules/evernote_mail addすると.gitmoduleというファイルがまだ無い場合は作られ、その中に [submodule "submodules/evernote_mail"] path = submodules/evernote_mai
git の submodule、便利ですが安定してない(変更の多い)リポジトリに使うと 地獄です。 Submodule Hellです。 やばいです。 開発で変更が入りまくるリポジトリをうっかりsubmoduleにしちゃった! かなり開発して入り組んできたけどどうしよう…。 なぜsubmoduleが地獄になるのか? 更新が多いリポジトリはコミットが2箇所になって地獄 しかも変更がsha-1形式でしか分からなくて地獄 submoduleのクラス名・メソッド名等をリネームすると、親側もリネームが必要になって無駄に2回のコミットをしなくちゃいけなくて地獄。 さらに、親のコミットはコードの修正&submoduleの変更の取り込みも必要 submoduleの参照先同士が衝突した時、何が悪いのか探すのが大変すぎて地獄 いともたやすくsubmodule側が detached HEAD になって自分のコミッ
gitで外部リポジトリを取り込んで利用するには、submodule(サブモジュール) とsubtree merging(サブツリーマージ)の2手法があります。 私の観測範囲内では、サブモジュールはよく利用されていますが、サブツリーマージは目にしません。 そこで、サブツリーマージを試してみての使い分けや思ったことをつらつらと。 大雑把な要点を最初に書いておく 外部リポジトリを外のものとして取り込むならサブモジュール 外部リポジトリを取り込みつつ、中のものとして手を加えていくならサブツリーマージ git初心者にはサブモジュール(異論ありそう) サブツリーマージ使ってみた github.com/marutanm/dotfiles 中身としては、よくある環境設定ファイル一覧です。 前提として、 tmux.conf(gistにおいていた) vim設定(githubにおいていた) zsh設定(gith
依存ライブラリを利用する場合RubyGemsやらCocoaPodsといったツールで万事解決するケースがほとんどだと思いますが、たまーにGitに上がっているライブラリを直接自分のリポジトリに追加しないといけない場合もあったりします。 こういった時に使うGitのサブコマンドそれぞれの特徴と使いどころをまとめてみました。 一番スタンダードな外部リポジトリ追加方法です。たぶん大抵の依存管理ではこれを使えば十分でしょう。git-submoduleを利用すると、外部リポジトリのコード自体は自プロジェクトの管理下に取り込まれず、リポジトリの特定コミットへの参照情報のみが登録されます。外部リポジトリのcommit hashへのポインタが追加されるようなイメージです。 $ git submodule add git@github.com:Alamofire/Alamofire.git $ git diff
この記事は Git Advent Calendar 6日目の記事です! Git submodule って最初わかりにくいと思うので、基本的な説明をしようと思います。 git submodule とは git submodule は、外部の git リポジトリを、自分の git リポジトリのサブディレクトリとして登録し、特定の commit を参照する仕組みです。 Subversion でいうところの、external と似ています。 さて、解説のため、手元に、リポジトリA (/path/to/a) とAの submodule として、よく使う例として Bootstrap (元Twitter Bootstrap) を登録してみます。 git submodule を理解するうえで重要なのは、 リポジトリAが指し示すsubmoduleとしてのBootstrapのcommit 現在のBootstr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く