Git协同工作之——非快进式推送
2014-06-30 21:42
316 查看
非快进推送(non-fast-forwardupdates)在远程版本库和当前版本库内容不一致时推送所致,引起原因一般为在多成员协同工作下,其他用户在当前用户版本库上次commit和本次commit之间向远程版本库执行了推送所致。
出现非快进式推送的日志:
图1
这是我们可以查看远程版本库和当前版本库的commit哈希值。
进入到.git目录下查看本地版本库最新commit信息:
图2
查看远程版本库commit信息:
图3
可以发现二者的不同,即出现了“非快进式推送”。
但是这种方式存在覆盖掉其他人提交的危险,当确定不会影响到其他人提交的情况下可以使用,比如使用gitcommit –amend修改提交日志等情况。
gitpush origin master
出现非快进式推送的日志:
图1
这是我们可以查看远程版本库和当前版本库的commit哈希值。
进入到.git目录下查看本地版本库最新commit信息:
图2
查看远程版本库commit信息:
图3
可以发现二者的不同,即出现了“非快进式推送”。
解决方式:
强制推送。
使用gitpush origin master --force或gitpush origin master -f。但是这种方式存在覆盖掉其他人提交的危险,当确定不会影响到其他人提交的情况下可以使用,比如使用gitcommit –amend修改提交日志等情况。
首先执行pull,继续Push,即合并后推送。这才是多成员协同工作推荐的方式。
gitpullgitpush origin master
其它
当然,在团队协作管理中,也可以禁止非快进式推送,可以通过变量receive.denyNonFastForwards或是通过钩子脚本设置。相关文章推荐
- git-svn — 让git和svn协同工作
- GIT与SVN协同工作—— 作为客户端的 Git
- Git 创建两个“本地分支”协同工作
- git使用之六——github协同工作的Fork+Pull Request
- git与SVN协同的工作流程
- git权威指南总结六:git协议和工作协同
- Git-搭建Git服务器并使用Git进行协同工作
- git 使用钩子直接推送到工作目录
- git-svn — 让git和svn协同工作
- 使用GIT@OSChina 实现协同工作的方法。
- Git和Gitlab协同工作
- Git和Gitlab协同工作
- git-svn — 让git和svn协同工作 【工具版】
- git-svn — 让git和svn协同工作
- git-svn — 让git和svn协同工作 【命令行】
- Git实验室——快进式推送(FastForwards)与非快进式推送(NonFastForwards)
- git干货系列:(五)多人协同工作之分支管理
- GIT工作协同
- git协同工作
- git使用之六——github协同工作的Fork+Pull Request