origin
源仓库,一般为git clone的仓库,如bannidaer/fastjson,克隆后默认提交和拉取的地址
upstream
为上游仓库,一般为origin fork 的仓库,如alibaba/fastjson
出现原因
先对alibaba/fastjson项目fork了,在自己仓库出现bannidaer/fastjson项目或直接添加上游仓库
git remote add upstream git@github.com:alibaba/fastjson.git
在本地克隆项目
git clone git@github.com:bannidaer/fastjson.git
在项目内查看仓库
git remote -v
就会出现:
操作的时候就要分origin和upstream,默认是origin,需要操作upstream需要添加说明
如:
git pull = git pull origin master是从bannidaer/fastjson的master分支拉代码
git pull upstream master才是从alibaba/fastjson的master分支拉代码
如果直接clone alibaba/fastjson,则只有:
操作为默认origin
解决提交冲突简单几步:
git reset 版本号
git pull
git pull upstream master
git add .
git push origin master
git push origin master -f
这是我常用的几个fork方式git命令,仅供参考,如果您有更方便的方式,私信与我交流!
如果不是通过master呢,而且在拉取分支提交分支上呢,以下我以分支Br_develop_1.11.0.300 为例:
// 检出远程分支
git checkout -b Br_develop_1.11.0.300 upstream/Br_develop_1.11.0.300
// 拉取远程分支
git pull upstream Br_develop_1.11.0.300
// 删除本地分支
git branch Br_develop_1.11.0.300 -D
// 撤销修改
git rebase --abort
// 推送远程分支
git push origin Br_develop_1.11.0.300
// 强制推送远程分支
git push origin Br_develop_1.11.0.300 -f
// 变基
git pull --rebase upstream Br_develop_1.11.0.300
// 撤销已经提交的记录
git reset HEAD^
// 撤销已经push的记录
git reset --soft 版本记录号
撤销重新提交分支如下:
git checkout master
git branch -D Br_release_Beta_415
git remote -v
git fetch upstream
git pull --rebase upstream Br_release_Beta_415
git rebase --abort
git reset HEAD^
git checkout .
git push origin Br_release_Beta_415 -f
删除本地分支重新提交到分支如下:
git branch -D Br_release_Beta_415
git fetch upstream
git checkout -b Br_release_Beta_415 upstream/Br_release_Beta_415
git push origin Br_release_Beta_415 -f











网友评论