1、背景
项目leader要求,对原仓库fork,减少主仓库分支的创建与便于管理。
使用平台:gitlab
2、fork仓库与原仓库关联
以下将原仓库称为仓库A,fork仓库称为仓库B。
fork了仓库A得到仓库B后,我们同样希望在B时我们能同步A的代码。这时候只要将A添加为B的上游仓库即可。
git remote -v
origin ssh://git@gitlab.fork_repo.domain:10022/**.git (fetch)
origin ssh://git@gitlab.fork_repo.domain:10022/**.git (push)
git remote add upstream ssh://git@gitlab.origin_repo.domain:10022/**.git
git remote -v
origin ssh://git@gitlab.fork_repo.domain:10022/**.git (fetch)
origin ssh://git@gitlab.fork_repo.domain:10022/**.git (push)
upstream ssh://git@gitlab.origin_repo.domain:10022/**.git (fetch)
upstream ssh://git@gitlab.origin_repo.domain:10022/**.git (push)
3、更改fork仓库的子模块关联
当我们fork的仓库有子模块时,总想要将子模块也更改为我们fork的子仓库。
(1)找到项目根目录下的.gitmodules文件,打开后每个子模块都会对应各自的仓库url地址,把url改成自己fork的子模块仓库地址即可
(2)更新子模块信息
git submodule sync
git submodule update --init --recursive
这样就将子模块替换为自己fork的仓库。同时为了保持与上游仓库同步,可以将.gitmodules的修改复原。
4、同步fork仓库与原仓库代码
其实和原本拉代码的步骤一样,拉某一分支——fix冲突——合并推上远程仓库
git fetch upstream master
git merge master
git push upstream master
//这里执行了拉下分支——合并——推上仓库的操作
//一般我是
git pull upstream master
git push
5、原仓库有的分支拉到fork仓库
git checkout -b new_branch upstream/new_branch
git push -u origin new_branch
网友评论