git操作:fork的远程库有更新如何处理

发布时间 2023-04-14 16:35:18作者: 叶随风

建议:

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

 

如果有其他分支,可以按照以上的方式操作