分布式版本控制系统——Git首次上传本地仓库至github
一、什么是版本控制
我们在写论文的时候,总是会不停地修改,下面这种状况相信很多人都遇到过:
因为不清楚自己删除的东西以后是否会用到,新增的又是否正确,所以在每次修改之后都“另存为”一个新的文档,这时候要是有一个软件能帮你记录每一个版本,并且能显示出各个版本之间的差异,那就方便多了。幸运的是,这样的软件还真有,Git 就是其中一个,功能如下所示:
二、版本控制系统的分类
版本控制可以分为两大主流类——集中式版本控制系统,分布式版本控制系统,接下来讨论他们之间的区别。
1.集中式版本控制系统
对于集中式版本控制系统(如CVS、SVN)而言,版本库是集中存放在*服务器的,开发者之间的合作方式是共用一个仓库(repository),无论这个仓库是在本地还是在远端,所有成员都共同 存取 于同一个仓库,如下图所示:
集中式版本控制系统最大的 缺点 就是必须联网才能工作,开发者想要取出代码、提交到仓库,或是对档案库做一些其他的操作,都必须在能够连网的环境下进行,这会大大降低开发效率。
2.分布式版本控制系统
分布式版本控制系统(如Git)使得每个人的电脑上都是一个完整的版本库,这样,在工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。
在分布式版本控制系统中,开发者可以进行“推”(push)的动作,其意义是将自身档案库中的变更送至其他的档案库;也可以进行“拉”(pull)的动作,其意义是获取其他档案库的变更。
Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,其中最重要的意义在于档案库中包含了完整的版本管理数据、例如提交信息、版本变化记录等等。 因此,所有对版本控制系统的操作,都可以直接在本机端的档案库中进行,包括提交、分支、合并、回退等。
三、Git的本地安装与基本操作
参考文档:https://www.cnblogs.com/specter45/p/github.html
https://www.cnblogs.com/wangmingshun/p/5424767.html
比较详细Git Bash命令解释:http://www.admin10000.com/document/5374.html
以下的介绍,都在Windows操作系统下
1.下载安装git
- 下载网址:https://git-scm.com/download/win
- 下载完后,默认安装即可,安装位置可以自己设定
2. Git Bash的操作
- 打开
Git Bash
工具 - 绑定用户
因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识,用户和邮箱为github注册的账号和邮箱。
输入语句:git config --global user.name "qichoy" git config --global user.email "[email protected]"
git config –global 参数
,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
- 创建本地仓库
cd G: //进入G磁盘 cd Git //进入本地仓库的文件夹 mkdir test //创建test文件夹 cd test //进入test文件夹下 git init //把这个目录变成git可以管理的仓库
创建完后,会在G/Git/test文件夹下创建一个.git隐藏文件夹(可以通过 “查看->显示隐藏文件” 查看到)
四、为Github账户设置SSH key
1.生成SSH key
先查看电脑中,C盘用户目录是否有.ssh目录,看看里面是否有rd_rsa和id_rsa.pub这两个文件,如果有则跳到下一步;如果没有这个目录,通过$ ssh-****** -t rsa -C “[email protected]”
来生成。
1)是路径确认,直接按回车存默认路径即可
2)直接回车键,这里我们不使用密码进行登录, 用密码太麻烦;
3)直接回车键
2. 查看ssh key公钥
生成成功后,去对应目录C:\Users\ASUS\.ssh里(ASUS为电脑用户名,每个人不同)用记事本打开id_rsa.pub,得到ssh key公钥(id_rsa.pub里面的全部内容)
3.为github账号配置ssh key
- 然后打开SSH keys菜单, 点击Add SSH key新增**,填上标题,跟仓库保持一致吧,好区分。接着将id_rsa.pub文件中key粘贴到此,最后Add key生成**吧。
- title设置成仓库的名称——此时为test,成功后显示如下:
五、上传本地项目到github
创建新仓库的指令:
git init //把这个目录变成Git可以管理的仓库
git add sqlist.h //将工作文件修改提交到本地暂存区
git add . //将所有修改过的工作文件提交到本地暂存区
git commit -m "first commit" //把文件提交到仓库
git remote add origin [email protected]:qichoy/test.git //将本地仓库和远程仓库关联
git push -u origin master //把本地仓库的项目推送到远程仓库(github)上
1.将所有的项目文件放到文件夹G:/Git/test/中,示例:
2.将所有文件添加到仓库
git add . //将所有文件添加到仓库
git commit -m "说明语句" //把文件提交到仓库,双引号内是提交注释。
3.关联github仓库
- 到github test仓库复制仓库地址,注意点击SSH
- 也可以使用https协议,但是SSH速度快。
- 然后执行指令:
git remote add origin [email protected]:qichoy/test.git
4.上传本地代码
- 执行指令:
git push -u origin master
- 敲一个:yes, 然后回车
- 上面出现错误,是因为仓库地址复制错了
5.最终效果
可以看到,我们上传了三个文档,其中,git commit -m "提交文档"
,说明语句会在每个文档后出现说明。
6.bug解决:
-
bug1说明
-由于之前在关联github仓库时,输错了地址,所以需要重新关联,但出现了如下bug:fatal: remote origin already exists.
正常情况下,如果已经关联过一次远程仓库后,继续输入git remote add origin……
则会出现以上的问题,可以直接push,无需关联。
bug1解决方案
如果输入$ git remote add origin [email protected]:qichoy(github帐号名)/test(仓库名)git
提示出错信息:fatal: remote origin already exists.
解决办法如下:
1、先输入$ git remote rm origin
2、再输入$ git remote add origin [email protected]:djqiang/gitdemo.git
就不会报错了!
更多参考:https://blog.****.net/dengjianqiang2011/article/details/9260435 -
bug2说明
-如果在创建远程仓库时,勾选了Initliaze this repository with a README(即创建仓库时,系统自动创建了一个README文件),在将本地仓库内容推送到远程仓库(git push -u origin master
)时会出现如下bug:error: failed to push some refs to '[email protected]:qichoy/LIST.git'
bug2产生原因
本地的仓库目录中没有远程仓库里的README文件
bug2解决方案
先将远程仓库中的文件拉下来,使得本地仓库也有README文件。
先输入语句:git pull --rebase origin master
在这之后,输入git push -u origin master
即可上传成功
六、git的一些说明
- 说明
git init (初始化,如果不是git项目,这一步必须要有),通常情况下,本地仓库只需要执行一次初始化
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:qichoy/test.git(创建本地与远程仓库的纽带,通常只需要进行一次关联)
git push -u origin master (第一次推送master分支的所有修改内容)
//此后,每次本地提交后(在完成`git add README.md`和`git commit -m "说明"`之后)
//只要有必要,就可以使用命令`git push origin master`推送最新修改
//这个也可以简略地写成:`git push`,将本地仓库的内容推送至远程仓库github
- 推荐git教程——廖雪峰官网(非常详细,可以自行了解g工作区,暂存区,分支等概念)
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000