一、Git介绍
概述:
Git是分布式的,Git不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用Git并且有个中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的PC是一样的。我们可以把它当做一个开发者的pc就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不过“交换”修改不方便而已。
git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。他们对新的系统制订了若干目标:
速度、简单的设计、对非线性开发模式的强力支持(允许成千上万个并行开发的分支)、完全分布式、有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
工作流程
- 1. clone(克隆): 从远程仓库中克隆代码到本地仓库
- 2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
- 3. add(添加): 在提交前先将代码提交到暂存区
- 4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
- 5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
- 6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge
- 7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
二、Git安装
官网:https://git-scm.com/download
傻瓜式安装(可能中间更改安装路径)
三、Git使用
1.本地仓库
1.1 Git本地操作的三个区域:
1.2工作流程:
1.3基本配置:
- 在安装好后首次使用需要先进行全局配置
- 桌面空白处右键,点击“Git Bash Here”以打开Git命令行窗口
- 在窗口中输入如下命令
$ git config --global user.name "用户名" $ git config --global user.email "邮箱地址"
注意:
当我们需要让Git去管理某个新项目/已存在项目的时候,就需要创建仓库了。注意,创建仓库时使用的目录不一定要求是空目录,选择一个非空目录也是可以的,但是不建议在现有项目上来学习Git,否则造成的一切后果概不负责!
为了避免在学习或使用过程中出现各种奇葩问题,请不要使用包含中文的目录名(父目录亦是如此)。
1.4创建仓库:
- 鼠标右键,新建一个文件夹【如果学习过Linux,可以直接在Git Bash Here中通过mkdir命令创建文件夹】
- 在新文件夹中右键Git Bash Here,进入项目目录
- 输入初始化指令:git ini
- 执行之后会在项目目录下创建“.git”的隐藏目录,这个目录是Git所创建的,不能删除,也不能随意更改其中的内容
1.5Git常见命令:
- 查看当前状态:git status
- 添加到缓存区:git add 文件名
- git add指令,可以添加一个文件,也可以同时添加多个文件。
- 语法1:git add 文件名
- 语法2:git add 文件名1 文件名2 文件名3 …
- 语法3:git add . 【添加当前目录所有文件到缓存区中】
- 提交至版本库:git commit -m “注释内容”
1.6版本回退:
- 查看版本:git log [option]【可直接使用git log】
- option:
- --all 显示所有分支
- --pretty=oneline 将提交信息显示为一行
- --abbrev-commit 使得输出的commitId更简短
- --graph 以图的形式显示
- 回退版本:git reset --hard 提交编号
- 查看历史操作:git reflog
- 回到过去之后,要想再回到之前最新的版本的时候,则需要使用git reflog指令去查看历史操作,以得到最新的commit id
2.远程仓库
2.1Git和GitHub区别:
Git是一个分布式版本控制系统,简单的说其就是一个软件,用于记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的软件。
Github(https://www.github.com)是一个为用户提供Git服务的网站,简单说就是一个可以放代码的地方(不过可以放的当然不仅是代码)。Github除了提供管理Git的web界面外,还提供了订阅、关注、讨论组、在线编辑器等丰富的功能。Github被称之为全球最大的基友网站。
2.2Github注册:
Github官网:https://github.com/
根据提示注册,可以使用浏览器的翻译功能(推荐使用edge,谷歌的翻译服务已经在大陆停止了)
注册完成后点击新建仓库
按照下图所示步骤创建
创建好线上仓库后,需要建立个人访问令牌
由于GitHub自21 年 8 月 13 后不再支持用户名密码的方式验证了,因此需要创建个人访问令牌(personal access token)。
根据所需选过期时间,建议设置成永远,以免麻烦,建议所有选项都选上
点击 Generate token 生成令牌
将生成的令牌拷贝下来,记得保存,下次你就看不到了!!!
2.3克隆GitHub上的仓库到文件夹:
输入指令:git clone 线上仓库地址
地址获取【这里使用http协议】
在现在的仓库上做对应的操作(提交暂存区、提交本地仓库、提交线上仓库、拉取线上仓库)
在提交到线上仓库之前需要先给你的本地仓库权限,让它可以访问到线上仓库
- 点击隐藏文件.git,找到config文件
- 用记事本打开,找到打码的这一行
- 按照 https://<your_token>@github.com/<USERNAME>/<REPO>.git 修改
- 将<your_token>换成你自己得到的令牌。<USERNAME>是你自己github的用户名,<REPO>是你的项目名称
提交到线上仓库的指令:git push
拉取线上仓库的指令:git pull
3.忽略文件
在项目目录下有很多万年不变的文件目录,例如css、js、images等,或者还有一些目录即便有改动,我们也不想让其提交到远程仓库的文档,此时我们可以使用“忽略文件”机制来实现需求。
忽略文件需要新建一个名为.gitignore的文件,该文件用于声明忽略文件或不忽略文件的规则,规则对当前目录及其子目录生效
该文件因为没有文件名,没办法直接在windows目录下直接创建,可以通过命令行Git Bash来touch创建。
常见规则写法:
1)/mtk/ 过滤整个文件夹
2)*.zip 过滤所有.zip文件
3)/mtk/do.c 过滤某个具体文件
4) !index.php 不过滤具体某个文件
在文件中,以#开头的都是注释。
示例
1.编写文件中的规则
2.上传线上仓库
3.观察线上仓库,发现没有js文件夹