git是什么
git是一种分布式项目管理工具,“分布式”是与“集中式”相对的概念。
- 集中式管理工具(典型的是SVN)需要联网才能使用,因为它没有本地的仓库,所有组内成员都统一把项目上传到一个联网的仓库内。当我们从仓库获取了整个项目到本地,我们对本地的文件进行了编辑修改再上传时,每个成员只记录修改的部分,不会产生多余的数据。这种方式给作为仓库的服务器较大的存储压力,因为作为仓库的服务器在存储之前需要比对上传的文件与仓库已存在的文件的差异,并记录这种差异。
- 分布式管理工具不需要联网也可以使用,它把每台设备都作为自己的仓库。在修改文件并存储时,仓库会用修改后的整个文件覆盖掉之前的文件,同时它还会把对该项目一切增删改查的操作记录也都记录下来。可以理解为每次上传都是做文件的存储覆盖。需要注意的是,尽管git更多时候是搭配github去使用,但是github只是作为“网盘”的存在,我们把github作为线上仓库的所在,可以让项目的成员都可以更方便的拿到文件,但github并不是git这种工具的必需品,github与git本身是没有任何关联的。
git如何使用
git管理项目时,这个项目它经历了什么呢
如上,可以看到一个项目文件在git中的“经历”是这样的,如上图,从工作区到暂存区,再到在线仓库。就可以按照这个过程去熟悉git的使用。
工作区:个人PC可以看到的文件目录结构,就是用来写项目并将来要上传的本地文件夹
暂存区:stage/index,一般存放在.gti/index中,所以git中的暂存区也会被称为索引。在上传到线上仓库之前项目就在这里。
在线仓库:线上存储项目的地方,方便所有人可以拿到
另外git还有一个版本库,它是工作区中的.git 隐藏文件,不算是工作区,而是 Git 的版本库。
1.工作区的创建
不是每个随便一个文件夹都可以作为工作区的,要不然我们整台电脑的东西都会被传进去,因此我们需要用一个特定的文件夹去作为这个工作区。这个环境是需要我们去创建的,如何创建这个工作区呢?
首先,我们创建一个文件夹,我们暂命名为test,右键这个名为test的文件夹,点击git Bash Here,执行如下指令
成功后,文件夹内会出现一个.git的隐藏文件夹,这个test文件夹内就是工作区了
2. 将文件上传到暂存区
文件修改编辑完成后,我们需要上传到暂存区,如下,其中git add 也可以加文件名,只上传特定文件。上传完成后,顺便添加个备注一起上传。
3.暂存区文件上传到线上仓库
-
先创建一个线上仓库 登录github,右上角点击加号选择New repository,填写一个仓库名,其他基本不用改。
-
连接仓库并配置SSH模式 与远程仓库关联有两种模式,一种是https,一种是ssh模式,https模式需要每次都输入用户名和密码,这里说明的是ssh模式。
执行以下代码连接仓库,并生成ssh key。然后打开~/.ssh/id_rsa.pub文件(~表示用户目录,比如我的windows就是C:\Users\Administrator.ssh),复制其中的内容(如果之前有配置过其他仓库的ssh,需要删除掉,再生成这个文件)
github内单击最右边github头像,下拉框选择setting,选择SSH and GPG keys,新界面点击最上面New SSH KEYS按钮,在新界面自己填写title和刚刚复制的ssh key。
3. 执行以下代码上传到线上仓库
git remote add origin git@github.com:primszp/myrep.git
git push -u origin master -u只有在第一次提交代码时添加
git push origin masters
一些常见问题解决
提示出错信息:fatal: remote origin already exists.
解决办法如下:
1、先输入$ git remote rm origin
2、再接着之前的命令重新执行 3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容
4、找到你的github的安装路径,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!
如果已经上传过文件,之后又需要怎么用呢
以上是如何第一次使用git的基本用法,当我们已经上传过代码进仓库,这意味着我们的项目已经开始,这时候有两种情况:
已经上传过文件,但工作区文件夹没有删掉
这时候只需要执行以下三条指令就可以继续上传项目
已经上传过文件,但工作区已经被删除了
需要执行 git clone + 地址 就OK