前言:开发过程中经常使用git,这里将平时遇到的git相关问题做下记录汇总
问题1: git push origin与git push -u origin master的区别
$ git push origin
上面命令表示,将当前分支推送到origin主机的对应分支。
如果当前分支只有一个追踪分支,那么主机名都可以省略。
$ git push 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push。
$ git push -u origin master 上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。
问题2: git push origin出现报错"Everything up-to-date"
在github上git clone一个项目,在里面创建一个目录,然后git push的时候,出现报错"Everything up-to-date"
原因:
1)没有git add .
2)没有git commit -m "提交信息"
如果上面两个步骤都成功执行,还出现这个错误是因为创建的目录下是空的,目录下必须有文件才能git push上传成功。
问题3: git切换分支报错:error: pathspec 'origin/XXX' did not match any file(s) known to git..
解决方法:
1、执行命令git fetch取回所有分支的更新
2、执行git branch -a可以看到test分支(已经更新分支信息)
3、切换分支git checkout test
问题4:gi pull报错:fatal: refusing tomerge unrelated history..
解决方法:
1、使用:git pull origin master --allow-unrelated-histories语句
2、进行手工merge即可