【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
  • このエントリーをはてなブックマークに追加

関連記事

さくらとロリポップのcronについての比較

私は今さくらのレンタルサーバーとロリポップのレンタルサーバーを両方試してみているのですがそのcron

記事を読む

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

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

記事を読む

関連記事を表示させるブログパーツOutbrainの導入方法

関連記事を表示させるブログパーツOutbrainの紹介です。 このOutbrainの長所は

記事を読む

動画や音楽を簡単にmp3,wavに変換できるフリーソフト『えこでこツール』

img.subject{ border: 2px solid #555; } span.l

記事を読む

【さくらサーバー】htaccessを使って拡張子無しでアクセスする

さくらサーバーで拡張子なしのアクセスする方法について非常に苦労したのでつづっておきます。私は

記事を読む

ブログのコメント欄をTwitterやFacebook、はてなのコメントで代用する方法

最近になってコメント欄にスパムっぽいものが大量に飛んでくるようになったのでどうにかしないと、と思い一

記事を読む

なるべく安くロリポップを申し込む方法

ロリポップというレンタルサーバーは元々比較的安く、よくキャンペーンなどで割引をやっているので安価にC

記事を読む

YahooメールがThunderbirdで登録できず「ユーザー名やパスワードが間違ってませんか」と出る

タイトル通りなのですが、しばらく悩んだので書き留めておきます。原因はいくつかあると思うのですがおそら

記事を読む

【MMD】BlenderでCyclesを利用してレンダリングしてみる

Cyclesを使ってみる BlenderのCyclesを用いてレンダリングを試してみました。Cyc

記事を読む

【jQuery UI】Sliderのオプション変更やイベントを取得をする方法

jQuery UIを使ってスライダー(トラックバー)を作ります。その際に起こるイベントとしてスライダ

記事を読む

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

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

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

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

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

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

【PHP】headerでContent-Typeを指定したのに効かない場合の対処法

PHPでサイトマップを作ろうと思い、XML形式のファイルを出力しようと

スマホ向け幅固定サイトの回転時の幅対応方法

幅固定サイトでのスマホ回転時Webサイトの横幅を合わせる方法のメモ。

【PHP】特定のURLからそのAtomやRSSのフィードを抽出する方法

特定のURLからRSSやATOMのフィードを抽出する方法をメモ。 流

フィード抽出ツール(RSS1.0、RSS2.0、atom)

任意URL サイト名 サイトURL RSS1.0

→もっと見る

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