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

関連記事

PocketImage

Pocketのソーシャルボタンをブログ・サイトに設置する方法

後で読みたい記事を保存することのできるPocketのソーシャルボタンの設置方法についてです。このボタ

記事を読む

Youtube-Image

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

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

記事を読む

linkwithin

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

LinkWithinについて ブログに関連記事を表示するパーツ『LinkWithin』を紹介します

記事を読む

abataaa1

かわいい女の子のアイコンやアバター画像を作れるサイト

TwitterやFacebookなどでアイコンが欲しくなることってあるかと思います。私も色々検索して

記事を読む

encodingtype

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

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

記事を読む

statusfollower

Twitterのフォロワーが有効かどうか評価するツール

ツイッターの自分のフォロワーがスパムや活動休止中か判定することのできるツールに『Status Peo

記事を読む

capturefullpageimg1

指定URLのWebサイトの画面全体をキャプチャする方法

Webサイトのスクリーンショットを撮る方法としてはいくつかありますが、各方法ごとに調べたものを紹介し

記事を読む

gazotuku1

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

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

記事を読む

sliderimage

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

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

記事を読む

RSS-Icon-Image

ニコニコ動画やYoutubeのRSSフィードもサムネ付きで手軽に表示できるブログパーツ

通常サイトのRSSだけでなく、ニコニコ動画やYoutubeの動画サイトのRSSを読み込んでサムネ画像

記事を読む

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

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

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

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

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

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

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

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

computer_server
格安プラン限定レンタルサーバー機能比較表(2016年)

はじめに  最近新しい共用サーバーをレンタルしようと思い調査およびそ

school_toshokan_hondana
kindle unlimitedが便利だったのでお勧めの使い方など感想メモ

 kindle unlimitedというサービスが8/3からAmazo

TAKEBE055122558_TP_V
寝る前にスマホを見ると斜視になる可能性とその対策

はじめに  寝る前などスマホを横になりながら見続けると斜視になる可能

→もっと見る

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