如何用命令将本地项目上传到git 及可能出现的问题汇总(持续更新... ...)

一、文件上传

在执行本地项目上传之前,你需要保证自己已经有一个GitHub账号,电脑上已经安装的Git工具。

如果没有执行以上操作,可以参考我的上一篇博客:

Github 初级教程(申请及Git安装配置)https://blog.csdn.net/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  冲突解决后,再次提交,提交成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值