問題場景:
新公司要求所有的代碼提交都要先通過自己的庫提交到主repo上去,所以先在gitlab網頁上fork出一個自己的庫,在本地修改完代碼后提交到遠程自己庫上,然后在gitlab網頁上發起一個merge request請求,然后等待主repo主人review,同意之后合入。
整體思路如下:
在自己的本地添加主repo為上游代碼庫,注意只是配置原倉庫的路徑,並沒有真正clone原倉庫,
然后將遠程主repo同步到自己本地的機器,
然后本地的機器再push到自己的遠程的fork庫
所有的操作都要在本地命令行完成
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git remote -v //查看關聯分支
origin git@github.com:haimait/gin-vue-admin.git (fetch)
origin git@github.com:haimait/gin-vue-admin.git (push)
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git remote add upstream https://github.com/piexlmax/gin-vue-admin.git //關聯源分支,並啟別名為upstream
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git remote -v
origin git@github.com:haimait/gin-vue-admin.git (fetch)
origin git@github.com:haimait/gin-vue-admin.git (push)
upstream https://github.com/piexlmax/gin-vue-admin.git (fetch)
upstream https://github.com/piexlmax/gin-vue-admin.git (push)
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git fetch upstream //摘取關聯的源分支最新代碼
來自 https://github.com/piexlmax/gin-vue-admin
* [新分支] feature/gin-vue-admin_v1.0.0 -> upstream/feature/gin-vue-admin_v1.0.0
* [新分支] feature/gin-vue-admin_v2.0.0 -> upstream/feature/gin-vue-admin_v2.0.0
* [新分支] master -> upstream/master
* [新分支] release/gin-vue-admin_v1.0.0 -> upstream/release/gin-vue-admin_v1.0.0
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git branch -a //查看本地和關聯遠程的所有的支支
haima_edit_admin_config
* master
remotes/origin/HEAD -> origin/master
remotes/origin/gin-vue-admin-develop
remotes/origin/haima_edit_admin_config
remotes/origin/master
remotes/origin/micro-gin-vue-admin
remotes/upstream/feature/gin-vue-admin_v1.0.0
remotes/upstream/feature/gin-vue-admin_v2.0.0
remotes/upstream/master
remotes/upstream/release/gin-vue-admin_v1.0.0
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git status
位於分支 master
您的分支與上游分支 'origin/master' 一致。
尚未暫存以備提交的變更:
(使用 "git add <文件>..." 更新要提交的內容)
(使用 "git checkout -- <文件>..." 丟棄工作區的改動)
修改: .gitignore
修改: static/config/config.json
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git add .
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git commit -m"edit config.json"
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git merge upstream/master //要主干上合並源代碼的主干
已經是最新的。
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git add .
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git commit -m"merge upstream master"
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git status
位於分支 master
您的分支與上游分支 'origin/master' 一致。
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git pull //拉取自己線上倉庫里的代碼
已經是最新的。
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git push //推送代碼到自己的倉庫里
Total 0 (delta 0), reused 0 (delta 0)
To github.com:haimait/gin-vue-admin.git
b75d839..c0c1a2c master -> master
如果想斷開遠程分支
haima@haima-PC:~/go/src/gin-vue-admin/QMPlusServer$ git remote rm upstream
推送代碼到自己的倉庫里后,就可以到線上New pull request請求合並代碼到源倉庫里了,這時就等待源倉庫里的管理員合並代碼了.
其實合並源倉庫的master分支 可以合並成一條命令
git pull upstream master
第一個參數pustream 表示遠程主repo
第二個參數master 表示自己fork庫的master分支
這個是公司文檔上寫的,並不是從網上找來的
為了說清楚這個問題,親自做了一張圖
切換到遠程dev分支上去進行開發
git clone新項目后如何拉取其他分支代碼到本地
1、git clone git@git.n.xxx.com:xxx/xxx.git
2、git fetch origin dev 命令來把遠程dev分支拉到本地
3、checkout -b dev origin/dev 在本地創建分支dev並切換到該分支
4、git pull origin dev 就可以把遠程dev分支上的內容都拉取到本地了
注:當本地代碼是dev分支時,需要先 git pull origin dev 更新遠程分支代碼到本地,然后再git pull (即拉取遠程master分支更新到本地),否則會有沖突。
https://blog.csdn.net/baidu_38027860/article/details/83303602