git subtree 拆库,提交,建立关联

来源:互联网 发布:模拟电子琴软件下载 编辑:程序博客网 时间:2024/06/06 14:17
git根目录 
    
project_a/
    
project_b/
    
...

git拆库:
# 拉一个新分支
git checkout -b project_a

# 重构本分支的log,将project_a目录提为根目录并去掉其他文件和log
git filter-branch -f --prune-empty --subdirectory-filter project_a/

# 将新的远端代码库添加到当前工作目录
git remote add project_a git://xxxxxx

# 将新的分支push到新的代码库的master分支
git push -f project_a project_a:master

建立关联(本地没有该子库文件夹):
git subtree add --prefix=project_a project_a master --squash

# 从远程仓库更新子目录
git fetch ai master 
git subtree pull --prefix=project_a project_a master --squash


# 从子目录push到远程仓库(确认你有写权限)
git subtree push --prefix=project_a project_a dev --squash

已存在库,建立关联,需要先建立分支,在外面单独提交,再建立subtree add关联:

cd git根目录

git subtree split -P project_a -b tempproject_a
(
這會把 project_a 這個資料夾抽出來成為一個叫 tempproject_a的 branch)


cd ..

mkdir project_a

cd project_a

git clone 子仓库(可 git checkout dev分支)

git pull
 ../git根目录 tempproject_a --allow-unrelated-histories
(從 git根目录中把 tempproject_a這個 branch 的資料拉回來)


git commit -m ""
(遇到冲突merge,可以用
git mergetool解决冲突


git push origin master

最后切回主工程

删除子文件夹 

git commit -m "remove moudle add subtree"

git remote add 
project_a <git@github.com:my-user/new-repo.git>  master --squash

git subtree pull -P project_a project_a master --squash

原创粉丝点击