如题,dev,master两个分支,将dev变基到master上,然后dev再去add,commit,push,会报如下错`hint:Updateswererejectedbecausethetipofyourcurrentbranchisbehindhint:itsremotecounterpart.Integratetheremotechanges(e.g.hint:'gitpull...')beforepushingagain.hint:Seethe'Noteaboutfast-forwards'in'gitpush--help'fordetails.`使用gitpush-f则会成功提交,且提交线变成一条
2 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
因为git只有一个主分支。也就是第一分支(我是这么叫的),然后我们可以在主分支上新建各个分支(我就叫它二级分支),这些二级分支是可以直接push到master分支的。但是呢,如果你在二级分支上新建分支(三级分支),那么git文件的master主分支是不关联这些分支的。也就是说,每一个分支都只关联直系分支。其他分支要想推到自己分支的时候,git直接拒绝了。所以。我猜测你的dev分支并不只在master上新建的。如果想不用-f强制推送。你可以手动关联这俩个分支。命令:gitremote附加:一般我们开发时,我们在master主分支上创建一个自己的分支。每个开发者一个属于自己的分支,然后本地分支关联该分支。只在自己分支改动。bug阶段,每个BUG(或者类别)新建一个分支,该分支与自己分支进行关联。不与主分支master关联。
GCT1015
TA贡献1827条经验 获得超4个赞
git-push--forceUsually,thecommandrefusestoupdatearemoterefthatisnotanancestorofthelocalrefusedtooverwriteit.Also,when--force-with-leaseoptionisused,thecommandrefusestoupdatearemoterefwhosecurrentvaluedoesnotmatchwhatisexpected.Thisflagdisablesthesechecks,andcancausetheremoterepositorytolosecommits;useitwithcare.当远程分支的提交不是本地分支的提交的祖先的时候,git-push会失败。变基(git-rebase)会改变提交的之间的祖先关系。从而造成上述情况。--force会强制提交,会导致远程仓库丢失提交。比如:A--B--D(master;origin/master)`--E(dev;origin/dev)#在dev分支gitrebasemasterA--B--D(master;origin/master)|`--E'(dev)`--E(origin/dev)这时,远程的origin/dev的提交是E,本地在E',E并不是E'的祖先,于是提交失败。
添加回答
举报
0/150
提交
取消