![76f6f16b2a31ffcf5c7925e8e8a70a94.png](https://img-blog.csdnimg.cn/img_convert/76f6f16b2a31ffcf5c7925e8e8a70a94.png)
前言:
![c313fc86c69a0821fc7bc78b42462e49.png](https://img-blog.csdnimg.cn/img_convert/c313fc86c69a0821fc7bc78b42462e49.png)
对于git新手来说,遇到各种坑,都是对原理的不理解导致的。学习git,理解+使用。
浅析 Git 思想和工作原理www.jianshu.com![686b8a4e620c380d764d0232d9da6703.png](https://img-blog.csdnimg.cn/img_convert/686b8a4e620c380d764d0232d9da6703.png)
![04501163986ad5df82355da170151117.png](https://img-blog.csdnimg.cn/img_convert/04501163986ad5df82355da170151117.png)
这里介绍2种方式来实现:
- 操作比较繁琐但易操作的方式:
- 在github上新建个项目
- 复制仓库地址,通过git clone (项目地址),复制到你存放项目的位置。
- 将原先的本地项目拷贝过来(node_modules不要拷贝,太大了)
- 然后就是正常的git操作了:git add .(添加所有文件到暂存区) => git commit -m "first commit"(commit提交代码) => git push origin master
![3b854f9b20472a76ec3cd705a53fb445.png](https://img-blog.csdnimg.cn/img_convert/3b854f9b20472a76ec3cd705a53fb445.png)
- 正常的关联方式:
- 在github上新建个项目(这里不同的创建步骤会涉及到最后不能push问题 - 是否是创建一个空的仓库)
- (创建空仓库)不勾选README, license, gitignore选项创建的仓库,长下面那样。
![6d1dbed9524c559b71ed302ca877585e.png](https://img-blog.csdnimg.cn/img_convert/6d1dbed9524c559b71ed302ca877585e.png)
![e82c30f7e9f90ab62c7d856488cdf5a7.png](https://img-blog.csdnimg.cn/img_convert/e82c30f7e9f90ab62c7d856488cdf5a7.png)
https://pic1.zhimg.com/v2-57f883eba362ba25542d58ac83703178_b.jpg
![46048da8d0dc507a940265528d4f0543.png](https://img-blog.csdnimg.cn/img_convert/46048da8d0dc507a940265528d4f0543.png)
2.(创建非空仓库)勾选README, license, gitignore任意选项
![da77aea060c5364ff0c66d0011b2351a.png](https://img-blog.csdnimg.cn/img_convert/da77aea060c5364ff0c66d0011b2351a.png)
- (空仓库)创建完空仓库就将本地项目关联到远程
- 如果本地项目已经通过git管理:直接通过git remote add origin (仓库地址) 关联 => git push -u origin master 推送代码上去,就完事了。
- 本地项目未通过git管理:git init(将项目通过git初始化) => git add .(添加所有修改到暂存区) => git commit -m "first commit remark"(提交commit) => git remote add origin (仓库地址) => git push -u origin master(推送到远程github)
- (非空仓库)创建完非空仓库就将本地项目关联到远程
- 远程非空仓库的关联,就要涉及到2个不同项目的关联了;得先将远程的代码合并下来,才能提交;我们先假设项目已经通过git管理了。缺少关联push远程仓库的步骤讲:
- 关联远程仓库:git remote add origin (仓库地址)
- git pull origin master --allow-unrelated-histories(意思是2个不同项目的没关联提交允许拉取合并)
- git push origin master(push成功,完工...)
注意:
针对非空仓库的关联:可能有同学会问为什么不直接git pull origin master呢?是可以的,但是2个不同项目的不同提交记录并没有关联,最后git push origin master是不会成功的。提醒如下图:
![ce35a05c91f90c0798d8c798f3e54adf.png](https://img-blog.csdnimg.cn/img_convert/ce35a05c91f90c0798d8c798f3e54adf.png)
![e76416a8cf6ec27d1e8fca79cac81faf.png](https://img-blog.csdnimg.cn/img_convert/e76416a8cf6ec27d1e8fca79cac81faf.png)
![722b3f4ab9beb07da963575d337b5d2b.png](https://img-blog.csdnimg.cn/img_convert/722b3f4ab9beb07da963575d337b5d2b.png)
出现(non-fast-forward)的根本原因是repository已经存在项目且不是你本人提交(但是git只认地址),你commit的项目和远程repository不一样。
![19f78133ce19f84446d5a7f57cef447e.png](https://img-blog.csdnimg.cn/img_convert/19f78133ce19f84446d5a7f57cef447e.png)