Git概述
-
Git是什么?
Git是一种版本控制控制系统,Git并不是Github,git是一种软件,用于版本控制的,而Github是一个商业网站,其本体是一个Git服务器。
-
为什么要用Git?
说到为什么要用Git,就要谈到备份,我们做的工作分为很多版本,这时就需要将老版本进行备份,但自己备份有很多缺点,占用的空间大,无法清除记录每个文件是谁、什么时候加入、修改、删除的,无法清除记录每个文件的差异。而Git就可以很好的处理这些问题,他保存的是文件内存的”快照“,可以非常快地切换版本,而且保留历史记录和证据,可以很快知道问题的发生时间、谁造成的。
-
Git的优点是什么?
Git是免费的、开源的;Git切换版本速度快;Git是分布式系统,每台计算机都有一个Git版本控制系统,虽然需要共同的服务器进行合作,但在没有网络的环境下依旧可以用Git进行版本控制,当网络恢复时再进行同步。
-
Git只有程序员需要吗?
Git只关心文件的内容,因此只要是文件,都可以使用Git来管理。但对于一些二进制文件(如图片,PSD文件)无法像常规文本那样可以一行一行地查看,也就无法精确地知道什么人在什么时候改了哪些字。但Git还可以做出其他工作,如回溯版本等。
Git安装
官方网站:Git - 安装 Git (git-scm.com)
从官方网站下载对应操作系统的合适Git版本即可。
终端常用命令
Windows | macOS/Linux | 说明 |
---|---|---|
cd | cd | 切换目录(很重要) |
cd | pwd | 获取当前所在的位置 |
dir | ls | 列出当前的文件列表 |
mkdir | mkdir | 创建新的目录 |
无 | touch | 创建文件 |
copy | cp | 复制文件 |
move | mv | 移动文件(修改文件名) |
del | rm | 删除文件 |
cls | clear | 清除画面上的内容 |
Vim操作介绍
Vim是Git的默认编辑器。所以应该介绍一点关于Vim的很简单的内容,要不然连怎么编辑和退出都不知道。当然可以修改默认编辑器,跳转到
常用模式
在Vim中,只要是通过模式的切换来进行输入、移动光标、选取、复制及粘贴等操作。常用模式有两种,即Normal模式和Insert模式,从名字上看就知道Insert模式就是编辑模式,而Normal模式就是切换到其他模式的一个中间模式。
-
从Normal模式到Insert模式:
- 按i:表示insert,即插入
- 按a:表示append,即追加
- 按o:表示new line,即新加一行
-
从Insert模式到Normal模式:
- 按Esc键或者Ctrl+[ 组合键
-
退出、保存:
首先在Normal模式下按shift和: 组合键
- 退出输入q:关闭文件,若未保存则会提示先存储在离开
- 保存并退出输入wq:存储完成后关闭文件
- 强制退出输入!q:在修改了文件但不想保存文件的情况
Vim的命令非常多,但以上的命令也已经足够了
Git的设置
用户设置
这是必须做的,要不然怎么知道是谁修改的文件
打开终端,输入以下命令设置用户名和邮箱
git config --system user.name "your name"
git config --system user.email "your email"
这里的config就是配置的意思。system就是系统用户的意思,为此系统的用户设置用户名及邮箱。处理system,还有两种参数适用于不同情况。
参数 | 说明 |
---|---|
global | 给整个计算机一次性设置(不建议) |
system | 给当前用户一次性设置 |
local | 给当前项目一次性设置 |
在都设置的情况下,local的优先级最高,其次是system。即越精细优先级越高
其他设置
更换编辑器
一般来说vim是Git的默认编辑器,但其门槛有点高。所以可以更换编辑器,我用vscode进行演示。
首先你得确定安装了vscode,在git终端输入code
可以跳出vscode编辑器
然后直接输入这条命令即可
git config --system core.editor "code --wait"
当然,根据你的需要可以修改system参数
输入以下命令以验证是否设置成功(跳转出vscode就是成功了,结束需要关闭文件)
git config --system -e
当需要用vscode进行编辑文件时,可以用命令code
后面跟文件路径。当然,可以输入目录名/
打开目录下的所有文件
设置缩写
有些命令很长,如checkout等,容易打错。所以可以设置缩写以便于更好的输入。以下是设置git checkout
的缩写为git co
的命令
git config --system alias.co checkout
alias的意思就是”别名“。可以看出来是设置配置文件,所以我们可以直接在配置文件中进行修改。使用如下命令打开配置文件.gitconfig(也可以找到这个文件,有用户级和项目级的,别配置错了)
git config --system -e
在[alias]下设置即可(若没有直接新增即可)。如下是网上示例。
[alias]
st = status
co = checkout
br = branch
mg = merge
ci = commit
md = commit --amend
dt = difftool
mt = mergetool
last = log -1 HEAD
cf = config
line = log --oneline
latest = for-each-ref --sort=-committerdate --format='%(committerdate:short) %(refname:short) [%(committername)]'
ls = log --pretty=format:\"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]\" --decorate --date=short
hist = log --pretty=format:\"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad\" --topo-order --graph --date=short
type = cat-file -t
dump = cat-file -p
Git基础使用
新增、初始化仓库
-
进入你想对其Git管理的目录下。(可以是空目录,也可以是已经存在的目录)
-
Windows下点击右键,点击
Git Bash here
。其他系统类似,只要在本目录下打开终端即可 -
终端输入
git init
命令初始化仓库。然后在本目录下就有.git这个目录了,这个目录下的文件很重要。 -
取消Git控制:把.git目录删除即可。Linux使用命令
rm -rf ./.git
。所以若你将这个目录删了那就寄了。
Git的三区
Git在逻辑上分为三个区域,即工作区、暂存区、存储区。顾名思义,工作区就是你用于编辑的区域,也就是当前目录下除.git外的所有文件,都处于工作区。当你编辑完成后,这时你想要进行保存这时的版本,你就要先提交到暂存区,然后再提交到存储区(完整过程)。暂存区的意义就是将你需要暂时提交的文件到这个区域,当完成所有工作时,一次性将暂存区的内容全部提交到存储区。(什么时候提交到存储区还是看你自己,想什么时候提交都可以,存储区的内容是有详细记录的,用于历史记录)
Git管控
当完成Git的初始化后,接下来就需要将当前工作区的文件交给git进行管控了。
-
将文件交给git:使用
git add
命令将需要进行管控的文件交给gitgit add welcome.html
以上命令就是将welcome.html文件交给git进行管控,这时此文件就已经保存到了暂存区。
-
将暂存区的内容提交到存储库中存档:使用
git commit
命令。git commit -m "将暂存区的内容提交"
-m参数是说明这次commit做了什么事,若没有这个参数,则会要求你进行输入说明。这个说明很重要!!!以下是关于信息的几点建议
- 尽量不要使用太过情绪化的字眼
- 英文、中文都可以,重点是要简单、清除
- 尽量不要使用类似bug fixed这样模糊的描述,因为不知道修改了什么bug。要精确,如
#34 bug fixed
就描述修改了34号bug
-
不说明直接提交:加上--allow-empty参数。这时就可以不输入说明进行提交
-
以上就是Git进行管控的完整过程。git add -> git commit
git add相关命令
-
使用万用字元:
git add *.html
,此命令将所有html后缀的文件全部加到暂存区。 -
使用--all或者.:
git add --all
或者git add .
,此命令将全部文件都加到暂存区。但它们还是有差别的。 -
--all和.的差别:以下表格是不同版本对文件的是否添加的区别。除此之外,
git add .
只会添加当前目录下(可能进入了根目录下的目录中)的所有文件,包括子目录下子子目录等下的文件,但git add --all
会添加工作区中的所有文件(及.git目录同目录下的所有文件)Git.1x 版本 使用参数 新增文件 改动文件 删除文件 -all 会添加 会添加 会添加 . 会添加 会添加 不会添加 Git.2x 版本及以后 使用参数 新增文件 改动文件 删除文件 -all 会添加 会添加 会添加 . 会添加 会添加 会添加