您的位置:首页 > 大数据 > 人工智能

fast forward 讲解:利用gitub进行托管 之 git push错误 fail to push some refs——no fast forward

2013-06-06 03:16 417 查看
概述:为了在不同地方,不同人员之间进行协同编辑,同时能够进行统一管理,我们可以把代码托管到github的服务器上。

1.第一步:新建一个github账户

2.第二步:在账户中新建一个仓库

3.第三步:在本地新建一个仓库

git init

git add .

git commit -m

4.第四步:在本地新建远程仓库与分支

git remote add origin git@github.com:testthinguser/iphone_project.git

vim .git/config

1 [core]
  2         repositoryformatversion = 0
  3         filemode = true
  4         bare = false
  5         logallrefupdates = true
  6 [remote "origin"]
  7         url = https://github.com/huangyukun2012/linux-2.4.21.git   8         fetch = +refs/heads/*:refs/remotes/origin/*
  9 [branch "master"]
 10         remote=origin
 11         merge = refs/heads/master


注意,remote "origin"表示远程分支的信息,branch master 表示本地分支的信息,其中remote参数表示要提交到的远程分支,merge 是默认的merge对象

5.第五步:利用git进行推送

git push origin master

此时,容易出现以下no fast forward错误:



出错原因:

多人协同开发,使用Git经常会看到警告信息包含术语:fast forward, 这是何义?

简单来说就是提交到远程中心仓库的代码必须是按照时间顺序的。

比如A从中心仓库拿到代码后,对文件f进行了修改。然后push到中心仓库。

B在A之前就拿到了中心仓库的代码,在A push成功之后也对f文件进行了修改。这个时候B也运行push命令推送代码。

会收到一个类似上面的信息:

提醒你非快进方式的更新被拒绝了,需要先从中心仓库pull到最新版本,merge后再push.

特别注意:

1)fast forward能够保证不会强制覆盖别人的代码,确保了多人协同开发。简而言之,fast forward提交就是说,后提交点B是前面最新提交点的直接后代。这样,直接将HEAD指针往下游移动即可。

2)尽量不要使用non fast forward方法提交代码。no fastforward状态如下图所示:

-------1.1-------1.2-------1.3

|

1.4-------1.5

上图产生的过程:从图中,我么可以看出:最开始我们从服务器上pull下来1.1版本,后来别人向服务器上提交了1.2和1.3版本,然后我们在本地分支开发了1.4与1.5版本。此时,如果我们再进行提交,那么1.2和1.3的版本历史将被覆盖。

解决方法:

先执行git pull

然后执行 git add .

然后git commit

最后git push origin master
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: