LoginSignup
1
1

More than 5 years have passed since last update.

git で過去のコミットログを残してリポジトリを統合する方法

Last updated at Posted at 2018-10-02

git で管理していると、一つのスクリプトだけリポジトリとかができてしまったりします。
そういうのを一旦を統合して、過去の履歴を残した状態にしたいことは結構あります。
というか、業務でありました。
調べて見たら情報はあるようでなかったので、まとめます。

想定するまとめ方

大きいリポジトリ a に小さいリポジトリ b を統合する。

テスト環境の構築

mkdir a
cd a/
git init 
touch a.txt
git add -A
git commit -m "1"
mkdir -p script/test1/
touch script/test1/index.sh
git add -A
git commit -m "2"
mkdir -p script/test2/
touch script/test2/index.sh
git add -A
git commit -m "3"
cd ..
mkdir b
cd b/
git init 
touch b.txt
git add -A
git commit -m "101"
touch index.sh
git add -A
git commit -m "102"
echo "hogehoge" > index.sh
git add -A
git commit -m "103"
cd ..

以上を適当な場所で実行すると以下のようになるはずです。

$ tree
.
├── a
│   ├── a.txt
│   └── script
│       ├── test1
│       │   └── index.sh
│       └── test2
│           └── index.sh
└── b
    ├── b.txt
    └── index.sh

5 directories, 5 files
$ cd a/
$ git log --oneline --graph --decorate=full
* 57ede31 (HEAD -> refs/heads/master) 3
* 0581249 2
* b95c42d 1
$ cd ../b
$ git log --oneline --graph --decorate=full
* 0671e8d (HEAD -> refs/heads/master) 103
* 2f3dff9 102
* 492a0b7 101

ここから統合していきます。

実際の作業

cd a/
mkdir script/b
git remote add b ../b
git fetch b
mkdir script/b
touch script/b/.gitkeep
git add -A
git commit -m "hoge"
git merge -X subtree=script/b/ b/master --allow-unrelated-histories
git rm script/b/.gitkeep
git commit -m "hoge"

とりあえず mastar にマージしていますが、実際はブランチ切って、プルリクエスト投げるのが正しいと思います。

どういう状態になるか

$ tree
.
├── a.txt
└── script
    ├── b
    │   ├── b.txt
    │   └── index.sh
    ├── test1
    │   └── index.sh
    └── test2
        └── index.sh

4 directories, 5 files
$ git log --oneline --graph --decorate=full
* a928c18 (HEAD -> refs/heads/master) hoge
*   ecf9fd8 Merge remote-tracking branch 'b/master'
|\  
| * 0671e8d (refs/remotes/b/master) 103
| * 2f3dff9 102
| * 492a0b7 101
* 17e5dfc hoge
* 57ede31 3
* 0581249 2
* b95c42d 1

確認すると分かる通り、2つが統合された形になります。

参考文献

https://chaika.hatenablog.com/entry/2015/06/04/173401
https://qiita.com/takanatsu/items/fc89de9bd11148da1438

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1