【TortoiseGit】複数のリポジトリを統合する

公開日: : Git, サイト制作, ソフト

スポンサーリンク

やりたいこと

最近WindowsにTortoiseGitを導入してリポジトリを作ったり、履歴をプッシュ・プルしたりと超基本的なことができるようになりました。

初めは適当にたくさんリポジトリを作っていたのですが、よくよく考えてみるとリポジトリとしたディレクトリの切り方が細かすぎて悪かったのではないかと思うようになったため、今まで作ったリポジトリをまとめて一つに統合する…ということをやりました。

リポジトリrepo1、repo2に対して下記2点について取り組みます。
下記共通処理
repo1とrepo2を合体させる
repo1の下にrepo2を移す

コンソールでの操作

下記サイトを引用させていただきました。

repo1とrepo2を合体させる

cd ~/repo1
git remote add repo2 ~/repo2
git fetch repo2

git merge repo2/master

repo1の下にrepo2を移す

cd ~/repo1
git remote add repo2 ~/repo2
git fetch repo2

# サブディレクトリの内容に repo2 の内容をマージする
# (repo2 と内容が似ているサブディレクトリを自動で判別)
git merge -s subtree repo2/master

# ↑でうまくいかないときにはパスを指定する↓
git merge -X subtree=subdir repo2/master

# そもそも ~/repo1/subdir が存在しないときには↓
git read-tree –prefix=subdir/ repo2/master
git checkout — .

詳細は参考リンク先をご覧ください。

とりあえず、これをコマンドなしのGUI画面からやりたいというのが今回の課題です。(正直無理してGUIでやる必要はないです)

コマンドで操作したことないど素人なので正直上記で何をやっているのかよくわかってませんでした。なので一つずつ理解しながら進めます。

基礎知識

git remote add [name] [url]

リモートリポジトリ先を登録します。[name]にはリポジトリの名前、[url]にはリモートリポジトリのURL(もしくはディレクトリ)を入れます。

git_remoteadd
↑tortoiseGitだとこんなかんじで登録できます。(右クリック→設定)

git fetch [name]

リモートリポジトリの最新の履歴の取得だけを行うことができます。[name]はリモートリポジトリの名前です。

git_fetch

TortoiseGitでは右クリック→「TortoiseGit」→「フェッチ」ですが、上記のリモートリポジトリの登録の時点でも「フェッチするか?」といったダイアログは出ます。

このfetchですが、実体は「pull = fetch + merge」で、動作としては、fetchによりリポジトリからダウンロードしてきてmergeにより統合させるといった感じのようです(ちなみにpushがアップロード)。それゆえ、pullは必要ないという意見もあるようです(下記リンク参照)。

リポジトリ統合のイメージ

fetchやmergeの動作を利用します。fetchで指定のリモートリポジトリからダウンロードしてきたデータをローカルでmergeにてうまいこと統合させる…といったストーリーです。

2つのリポジトリをまとめる

ここからやっと本題です。

共通処理

repo1にrepo2を持ってくることを考えます。まず、ローカルリポジトリrepo1にリモートリポジトリのrepo2のありかを教えます。先ほどの説明のようにrepo1のどこかしらで右クリックして「設定」画面を開いてrepo2を指定します。

git_target_repo
↑設定はサンプルです

適当にどこかクリックするとフェッチしますかといった文言が出てくるので「はい」としてフェッチ(ダウンロード)します。

git_repo_fetch_info

リモート先の指定が出るので「repo2」を指定して「OK」を押してリモート先からダウンロード開始します。

git_repo_fetch_dialog_repo2

repo1とrepo2を合体させる

ローカルリポジトリ「repo1」のどこかで右クリック→「TortoiseGit」→「マージ」でマージします。

git_merge

ダイアログが出てくるので「repo2」を選択してOKをクリックします。

git_repo_ex1_merge

これでrepo1のローカルリポジトリにrepo2がマージされました。

repo1の下にrepo2を移す

まずはrepo1の中にrepo2フォルダを作成します(名前は変更しても構わない)。そして、このフォルダを認識させるために中になんでも良いのでファイルを作成&追加してコミットします。この手順を踏まないとうまくいきません。このファイルは後で削除してください。
 ちなみに元々のrepo2が既にrepo1の中にあって、それ自体がリポジトリの場合はrepo2フォルダをどこかへ退避させて作業するとよいと思います。

そしたら、その中にリモートリポジトリrepo2からダウンロードしてきたデータをマージさせます。(右クリック→「TortoiseGit」→「マージ」)

git_merge_exec

方針の部分を「recursive」→「subtree」とすると右側のテキスト欄が有効になるのでそこに「repo2」(さっき作ったフォルダ)を指定します。

これでOKを押すとrepo2の中にリモートリポジトリのrepo2の内容(+さっき作ったファイル)が入っているはずです。

スポンサーリンク
Amazon
  • このエントリーをはてなブックマークに追加

関連記事

livedoorblogのタグのページが404 Not Found

別のブログとしてライブドアのものを使っているのですが、タグを編集していた際に特定のタグ一

記事を読む

みんなで創る!! 魔法少女まどか☆マギカ ピクセルアート Dot de madoka☆magicaイベントについて

劇場版魔法少女まどか☆マギカ展が2014年5月より東京と大阪で開催されます。そこで行われるピクセルア

記事を読む

FC2ブログからWordPressへの引っ越しについて

今までFC2ブログでメモを残していましたが、WordPressに移行することにしました。理由としては

記事を読む

相互RSSサービスのまとめ

ブログやサイトを作ると相互RSSという名前を聞くことがあると思います。相互RSSとはざっくりいうと他

記事を読む

Windowsユーザが初めてMacBookを購入したときの注意点や感想

最近12インチのMacBookを購入しました。今までWindowsしか使ったこと無かったのでそれと比

記事を読む

UWSCを使ったソフト自動立ち上げ【SoftEther VPN Server】

やりたいこと 最近SoftEtherという筑波大学発のベンチャー企業が立ち上げたVPNサービスとい

記事を読む

関連記事を手軽に表示できるzenbackの導入方法

関連記事を手軽に表示できるZenbackというサービスの紹介です。 関連記事の表示を手助けして

記事を読む

【HTML/CSS】タイトルロゴ画像の設定の方法

自分のブログやサイトのタイトル部分にトップ絵画像を設置する方法です。方法としてはimgタグをHTML

記事を読む

【jQuery】サイドバー固定に役立つサイト集

縦スクロール 縦方向にスクロールして指定の位置に来たら要素を固定させる方法のリンク集を紹介させてい

記事を読む

YoutubeのURLリンクを外部プレイヤーのものに正規表現で置換する

Youtubeのアドレスを正規表現を使って抽出して外部プレイヤーのフレームに変換・置換するスクリプト

記事を読む

NVIDIA DIGITSをSupervisorを使って自動起動する

はじめに 先日Ubuntu14.04にDIGITS 5をGPUなしP

【2017年度】GeForce 1080 Ti搭載BTOパソコン比較

はじめに 最近ディープラーニング用にGPUのないPCにDIGITSを

Windows用のシンプルなストップウォッチソフト紹介

Windows(10)でも使える使いやすいKAZAMITimerという

MNISTをDIGITS 5のCPUのみで試す(GPUなし)

はじめに DIGITSを使えばGUI操作で簡単にディープラーニングが

Windowsユーザが初めてMacBookを購入したときの注意点や感想

最近12インチのMacBookを購入しました。今までWindowsしか

Redmine3.2をUbuntu14.04にインストールして躓いた所についてメモ

はじめに Ubuntu14.04 ServerにRedmine3.2

UWSCを使ったソフト自動立ち上げ【SoftEther VPN Server】

やりたいこと 最近SoftEtherという筑波大学発のベンチャー企業

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑