1.前言
使用 git做项目控制版本工具,当然,使用SVN也可以,但是,git让人感觉更先进一些,与GitHub结合,用起来很方便,服务端由官网控制。
而SVN分客户端和服务端,都是个人控制,因此,会觉得相对安全一点,毕竟SVN存东西是在自己的服务里,而git是存在云端!!!
2.创建 仓库
(1)首先需要有一个自己Github账户,
官网地址 : https://github.com/
怎么注册就不说了,
登录后,点击右上角的加号
点击 new repository ,即新存储库的意思
(2)设置仓库信息
(3)仓库介绍
3. 下载git工具
好了,现在我有了一个仓库,仓库路径是 https://github.com/cen-xi/cen.git
现在我想要把文件上传到里面
还需要一个工具,git , 【分为 vim 指令框的 git bash , 以及 GUI界面 git GUI】
下载地址 : https://git-scm.com/downloads
4.配置测试文件
下载后改好安装路径后,基本按下一步即可,默认配置就可以了。
新建一个文件夹,名字随意
为了演示,我新建了3种不同文件和文件夹
现在我想把cc 和ee 文件上传到git仓库,但是又不想将文件夹 kk 和图片gg上传
于是需要做一个 .gitigore 配置文件将 kk和gg忽略操作
你会发现只保留后缀的文件无法创建,没关系,这需要用到 ren命令
cmd打开指令框 ,进入这个文件夹
输入 ren 22.gitignore .gitigore
看 ,出来了
对 .gitignore 文件 编辑,使用记事本打开,保存关闭
关键的一步:
需要新建一个 README.md文件 ,这个文件作为验证文件使用 ,如果仓库里的这个文件与本地电脑里的不同,会导致报错 无法 操作远程仓库 ,
如果新仓库创建还没有 README.md文件 ,可以在 GitHub 创建
当然也可以在本地创建,
注意 ,
(1)如果仓库里面没有README.md文件 ,第一次操作远程仓库 ,则本地README.md文件创建的内容可以随便写,上传后将作为验证内容 ,
下次做远程仓库操作则内容必须与本地同步,否则报错无法 操作仓库
(2)如果在GitHub创建已经 README.md文件 ,第一次操作远程仓库 ,则本地README.md文件创建的内容不可以随便写,必须与仓库的内容一样,
一般是直接从仓库下载,懒得写。
5.上传操作
好了现在,需要上传文件里
在当前文件夹鼠标右键
选择 Git Bash Here
会出来 vim指令框
依次输入内容
//初始化配置 ,新建 .git文件夹
git inti
//添加当前目录所有文件 ,【会自动识别 .gitignore文件忽略的文件不添加】
git add *
//提交添加的文件到缓存【存储文件操作,不仅仅是文件的添加,也可以包括文件修改、删除】
git commit -m "第一次上传文件,这是注释“
//添加仓库地址 ,这个可以在任何时候添加
git remote add origin https://github.com/cen-xi/cen.git
//将缓存的文件操作推送到远程仓库
git push -u origin master
输完最后一句话等一会会弹出账户密码输入框
出现上传进度,等一会,100%后
然后在GitHub 刷新页面查看 ,上传成过
6.上传报错-原因
有时候,你会发现报错了 ,,你会疑惑,以前都是这样上传文件的,为什么这里用不了?
情况一:
! [rejected] master -> master (fetch first)
情况二:
! [rejected] master -> master (non-fast-forward)
分析:
情况一 是因为 ,git仓库中的README.md文件不在本地代码目录中,或者与本地的README.md文件内容不一样。
情况二是因为 ,git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去,
可以使用指令 git push -f 强推 ,但不建议这样,这是直接覆盖,强制执行,导致原来的远程仓库里的东西全部被替换掉了,所以切记这种操作是不可取的,并且尽量在本地做出一些修改,然后再push到GitHub上
7.上传报错-解决
上面两种情况其实都可以用一样的办法解决,
就是将git仓库的readme文件与本地的合并即可,【当然,也可以将本地的内容修改的和git仓库的一样,也可以直接把git的文件拷贝下来替换掉本地的,】
(1)合并README.md文件
输入指令
git pull origin master --allow-unrelated-histories
再查看本地README.md文件,发现变化了,多了部分内容,那是git仓库的README.md文件内容
缺点是 仓库readme文件会更新,会与本地的合并文件相同
【.gitignore文件 无法把本地 README.md文件添加作为忽略配置】
注意:
但是,有时候 运行这句指令会抛出异常 ,意思是说,会覆盖本地 readme文件 ,因此,需要本地的readme文件移除,再执行,会自动从git仓库下载下来,如果需要将仓库readme文件修改,需要下载下来后再对其修改即可
有时候不仅仅提示 readme文件需要移除,还可能 有其他文件 也需要移除 ,只能先备份到其他地方,清除当前目录里面的这些文件,然后再运行指令,这些文件会从仓库下载,如果需要修改,将备份的文件将仓库下载的文件替换即可,不清除则无法同步文件
执行成功后,会弹出窗口
直接键盘输入 :wq 后回车即可退出 vim编辑
8.上传报错-测试
为了测试,我添加了个.txt文件
还是上面的上传操作 步骤,但是,如果已经有了 .git文件夹 ,则可以不写指令 git init
GitHub 刷新
9.报错-无法合并仓库readme和本地readme文件
上面提到 ,有时候 运行 git pull origin master --allow-unrelated-histories 这句指令会抛出异常
需要本地的readme文件移除,再执行,会自动从git仓库下载下来,如果需要将仓库readme文件修改,需要下载下来后再对其修改即可
现在来操作一下 ,
(1)移除本地 的 readme文件 ,执行 git pull origin master --allow-unrelated-histories
下载来的仓库readme内容
(2)现在修改 ,记得保存
(3)新加一个txt文件来测试
(4)运行上传指令
GitHub 刷新
10. .gitignore能不能忽略README.md上传?
(1)添加文件 04-ce.txt 用来对比
(2)在 .gitignore文件添加
(3)执行添加指令
会发现没有 readme文件 。。。。。
(4)将目录里面的 .git文件夹删除 ,再次执行添加指令
神奇的发现 readme文件出来了
(5)添加新文件 ,用于测试能不能上传
(6)执行指令
测试结果是仍然无法上传
(7)恢复readme测试 ,将readme文件从.gitignore里去除
再次上传执行指令 ,奇怪是 ,仍然失败 ,无法上传 ,很奇怪
(8)运行上面解决该报错的步骤
GitHub 刷新,文件上传成功,【名字懒得改,将就使用即可】
11.删除指定文件
使用 git rm 【文件名】 删除
我要删除 cc.txt
指令
刷新GitHub,发现已经删除了
当然 也可以在GitHub里面删除 ,删除 ee文件
(1)
(2)
(3)
(4)
(5)好了,回到目录发现已经删除
12.删除全部文件
如果 .gitignore 文件有设置 文件信息 , 这些文件信息则不会被选中
同时 指令 git rm * 将会报错 ,表示文件无法选中
有时候 即便 gitignore文件里面没有设置,但还是有些文件不能选中,需要将文件添加后再删除
文件夹 需要指令 rm -r 才可以删除 ,
rm不能删除,会报错
删除kk,先演示删除文件
运行指令git rm * 后,本地文件夹目录会删除文件
指令
刷新GitHub,发现全部文件都没了。。。包括 readme文件。。。。。所以,请慎用,公司开发会被打死
13.查看-新建-切换 分支
分支用于大版本的改动
指令说明
//查看当前分支
git branch
//新建分支,newbranch是新分支名字,可以自定义
git branch newbranch
//切换到指定分支
git checkout newbranch
---------------------------------
参考博文原址 :
https://blog.csdn.net/u012145252/article/details/80634768?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
https://blog.csdn.net/xieneng2004/article/details/81044371
https://blog.csdn.net/u013452337/article/details/81360210
https://www.jianshu.com/p/2c9ab8c44775