一、文件上传
在执行本地项目上传之前,你需要保证自己已经有一个GitHub账号,电脑上已经安装的Git工具。
如果没有执行以上操作,可以参考我的上一篇博客:
Github 初级教程(申请及Git安装配置)https://blog.youkuaiyun.com/fhy569039351/article/details/83963003
1、(先进入项目文件夹,即:在要上传的项目路径下邮件,点击Git Bash Here)通过命令 git init 把这个目录变成git可以管理的仓库
git init
注:一定要先执行 git init ,否则报错:fatal: Not a git repository (or any of the parent directories): .git 是因为没有执行git init 引起的
2、把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件
git add .
3、用命令 git commit告诉Git,把文件提交到仓库。(引号内为提交说明)
git commit -m 'first commit'
4、关联到远程库
git remote add origin 你的远程库地址
如:
git remote add origin https://github.com/cade8800/ionic-demo.git
注:这里可能会报错:fatal: remote origin already exists.
解决办法:先:git remote rm origin
再:git remote add origin https://github.com/cade8800/ionic-demo.git (ionic-demo仓库是已经在github上建好的)
5、获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
git pull --rebase origin master
注:这里可能报错:fatal: Couldn't find remote ref master
解决办法:如果该仓库是空的,可以忽略该错误,不影响后面语句执行。
6、把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。执行此命令后会要求输入用户名、密码,验证通过后即开始上传。
git push -u origin master
*7、状态查询命令
git status
不足之处,希望大家批评指正!
二、问题汇总:
1、在上传文件时遇到一个问题,报错如下:
$ git push --set-upstream origin master
To https://github.com/fuhongyu/concurrent-programming.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/fuhongyu/concurrent-programming.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
截图如下:
问题解决思路汇总:
1、通过git log分析,出现问题的原因是:远程的一个commit在本地没有,而本地的有两个commit在远程没有,是有冲突的
2、合并远程commit到本地:git pull (pull本身也包含了merge这个步骤,而且它还有一个额外的操作是会预先在merge之前去远端的仓库里边儿拉取最新的更新,然后再进行merge)
3、有冲突,通过git status 查看具体冲突是:远程删除 readme.md文件的commit本地没有
4、本地 : git add readme.md 在本地git index文件中添加操作
5、再次提交:git push
问题详细分析:
通过分析错误提示 hint:Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes (e.g. 'git pull ...') before pushing again. (更新被拒绝,当前分支落后于远程分支,请先整合远程的改变再提交)提示里说是落后,其实并不一定是严格的落后,只要是本地commits数量和远程commits数量不一致,都会报错如上。
接下来我们再详细分析:
我们用图来简单分析下出现上面问题的原因:
远程有3个commitsA-B-C,本地有三个commitsA-B-D,本地与远程commits有冲突。所以这里提交时会被拒绝,即出现我们刚刚提示的错误。
$ git log
$ git log origin/master
看到了么,这就是我出现这个问题的原因,接下来就是解决办法了:
$ git pull 会发现有冲突:
pull本身也包含了merge这个步骤,而且它还有一个额外的操作是会预先在merge之前去远端的仓库里边儿拉取最新的更新,然后再进行merge
$ git status 查看具体冲突如下:
$ git add readme.md 将修改内容添加到git的index文件中
$ git log 下图显示 添加成功
$ git push 冲突解决后,再次提交,提交成功