分布式版本控制系统——Git首次上传本地仓库至github

一、什么是版本控制

我们在写论文的时候,总是会不停地修改,下面这种状况相信很多人都遇到过:
分布式版本控制系统——Git首次上传本地仓库至github
因为不清楚自己删除的东西以后是否会用到,新增的又是否正确,所以在每次修改之后都“另存为”一个新的文档,这时候要是有一个软件能帮你记录每一个版本,并且能显示出各个版本之间的差异,那就方便多了。幸运的是,这样的软件还真有,Git 就是其中一个,功能如下所示:
分布式版本控制系统——Git首次上传本地仓库至github

二、版本控制系统的分类

版本控制可以分为两大主流类——集中式版本控制系统,分布式版本控制系统,接下来讨论他们之间的区别。

1.集中式版本控制系统

对于集中式版本控制系统(如CVS、SVN)而言,版本库是集中存放在*服务器的,开发者之间的合作方式是共用一个仓库(repository),无论这个仓库是在本地还是在远端,所有成员都共同 存取 于同一个仓库,如下图所示:
分布式版本控制系统——Git首次上传本地仓库至github
集中式版本控制系统最大的 缺点 就是必须联网才能工作,开发者想要取出代码、提交到仓库,或是对档案库做一些其他的操作,都必须在能够连网的环境下进行,这会大大降低开发效率。

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
2. Git Bash的操作
  • 打开Git Bash工具
  • 绑定用户
    因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识,用户和邮箱为github注册的账号和邮箱。
    输入语句:
    git config --global user.name "qichoy"
    git config --global user.email "[email protected]"
    
    git config –global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
    分布式版本控制系统——Git首次上传本地仓库至github
  • 创建本地仓库
    cd G:		//进入G磁盘
    cd Git		//进入本地仓库的文件夹
    mkdir test	//创建test文件夹
    cd test		//进入test文件夹下
    git init	//把这个目录变成git可以管理的仓库
    
    分布式版本控制系统——Git首次上传本地仓库至github
    创建完后,会在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)直接回车键
分布式版本控制系统——Git首次上传本地仓库至github

2. 查看ssh key公钥

生成成功后,去对应目录C:\Users\ASUS\.ssh里(ASUS为电脑用户名,每个人不同)用记事本打开id_rsa.pub,得到ssh key公钥(id_rsa.pub里面的全部内容)

3.为github账号配置ssh key

分布式版本控制系统——Git首次上传本地仓库至github

  • 然后打开SSH keys菜单, 点击Add SSH key新增**,填上标题,跟仓库保持一致吧,好区分。接着将id_rsa.pub文件中key粘贴到此,最后Add key生成**吧。
    分布式版本控制系统——Git首次上传本地仓库至github
  • title设置成仓库的名称——此时为test,成功后显示如下:
    分布式版本控制系统——Git首次上传本地仓库至github

五、上传本地项目到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/中,示例:

分布式版本控制系统——Git首次上传本地仓库至github

2.将所有文件添加到仓库
git add .		//将所有文件添加到仓库
git commit -m "说明语句" 	//把文件提交到仓库,双引号内是提交注释。

分布式版本控制系统——Git首次上传本地仓库至github

3.关联github仓库
  • 到github test仓库复制仓库地址,注意点击SSH
  • 也可以使用https协议,但是SSH速度快。
    分布式版本控制系统——Git首次上传本地仓库至github
  • 然后执行指令:git remote add origin [email protected]:qichoy/test.git
4.上传本地代码
  • 执行指令:git push -u origin master
  • 敲一个:yes, 然后回车
    分布式版本控制系统——Git首次上传本地仓库至github
  • 上面出现错误,是因为仓库地址复制错了
5.最终效果

可以看到,我们上传了三个文档,其中,git commit -m "提交文档",说明语句会在每个文档后出现说明。
分布式版本控制系统——Git首次上传本地仓库至github

6.bug解决:
  1. 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
  2. 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'
    分布式版本控制系统——Git首次上传本地仓库至github
    分布式版本控制系统——Git首次上传本地仓库至github
    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