git操作:fork的远程库有更新如何处理
建议:
git fetch 相当于是从远程获取最新到本地,不会自动merge
如果没有建立repo的远程源(fork源),通过 git remote -v 查看
如果里面只能看到你自己的两个源(fetch 和 push),那就需要添加主repo的源:
origin git@gitlab.abc.com:用户名/Artemis.git (fetch)
origin git@gitlab.abc.com:用户名/Artemis.git (push)
那么需要做如下操作:
git remote add upstream git@gitlab.abc.com:Artemis/Artemis.git
然后 git remote -v 查看
origin git@gitlab.abc.com:用户名/Artemis.git (fetch) origin git@gitlab.abc.com:用户名/Artemis.git (push) upstream git@gitlab.abc.com:Artemis/Artemis.git (fetch) upstream git@gitlab.abc.com:Artemis/Artemis.git (push)
这里的 upstream 是我们建立的远程branch(fork源)的一个本地别名。
此时,如果upstream有更新(别人提交了代码并通过了merge request的请求)代码有更新
则,可以做如下操作:
git fetch upstream master:tmp //从远程仓库master分支获取最新,在本地建立tmp分支 git diff tmp //將当前分支和临时生成的tmp分支行对比,查看不同(变更)的地方 git merge tmp //合并tmp分支到当前分支(当前在master分支) git branch -d tmp //tmp临时分支已经没有用,可以删除
也可以这样操作:
git fetch upstream master //将远程仓库的master分支下载到本地当前branch中 git log -p master ..upstream/master //比较本地的master分支和origin/master分支的差别 git merge upstream/master //进行合并
附:
# 新建分支develop git checkout -b develop # 从fork源库拉代码,指定develop分支 git pull upstream develop 如果觉得拉去代码每次都要指定源和分支,可以绑定 git branch --set-upstream-to=<remote>/<branch> develop # 推送本地代码到fock的新项目(自己的项目) git push origin develop
如果有其他分支,可以按照以上的方式操作