目录
Git简介
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
特点
优点:
适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间可以很容易的解决冲突。
离线工作。
缺点:
资料少(起码中文资料很少)。
学习周期相对而言比较长。
不符合常规思维。
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
文件的三种状态
Git 有三种状态,你的文件可能处于其中之一: 已提交(committed)、已修改(modified) 和 已暂存(staged)。
-
已修改表示修改了文件,但还没保存到数据库中。
-
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
-
已提交表示数据已经安全地保存在本地数据库中。
安装
windows安装路径:Git
Git-2.37.1-64-bit.exe点击运行,全部默认。
Git的命令
初始化Git
$ git init
Initialized empty Git repository in I:/gitStudy/ssm/git-study/.git/
#绑定个人信息
> git config --global user.name "名字"
> git config --global user.email "邮箱"
#检查信息是否写入成功
> git config --list
#创建一个文件
$ touch a.txt
#插入数据123
$ echo 123 >a.txt
#提交到到缓冲区
$ git add .
#提交到本地
$ git commit -m 'first'
基础命令
#提交到到缓冲区
$ git add .
#提交到本地
$ git commit -m 'first'
#状态查询
$ git status
#查看历史操作
$ git log
windows下的换行符是CRLF而Unix的换行符格式是LF。git默认支持LF。
上面的报错的意思是会把CRLF(也就是回车换行)转换成Unix格式(LF),这些是转换文件格式的警告,不影响使用。
一般commit代码时git会把CRLF转LF,pull代码时LF换CRLF。
版本回溯
#一个~表示一个版本 ~~表示两个 ~10表示10个
$ git reset --hard head~
#使用版本号回溯
$ git reset --hard 7d82dcc4083f82a0ade4da8927d55bd952778876
#查看历史的操作
$ git reflog
#使用历史的编号回溯到以前的的
$ git reset --hard a7d54f1
--hard : 回退版本库,暂存区,工作区。(因此我们修改过的代码就没了,需要谨慎使用)
reset 不仅移动 HEAD 的指向,将快照回滚动到暂存区域,它还将暂存区域的文件还原到工作目录。
--mixed: 回退版本库,暂存区。(--mixed为git reset的默认参数,即当任何参数都不加的时候的参数)
--soft: 回退版本库。就相当于只移动 HEAD 的指向,但并不会将快照回滚到暂存区域。相当于撤消了上一次的提交(commit)。
版本比较
#没有add提交前但是修改了可以对比
$ git diff
#最新的一次进行add提交比较
$ git diff head
#仓库的和add提交的暂存区比较
$ git diff --cached a7d54f1f1974a1c5ebbc107f37db7d8891d78ee2
#俩个版本进行比较
$ git diff a7d54f1f1974a1c5ebbc107f37db7d8891d78ee2 7d82dcc4083f82a0ade4da8927d55bd952778876
文件删除
#直接在文件夹反键删除,文件会在暂存区
#将缓存区的文件恢复
$git checkout --a.txt
#使用 $git commit 就可以删掉
#文件会在工作目录被删掉
$git rm a.txt
更改文件名字
文件a.txt的名字变成了b.txt $git mv a.txt b.txt
文件忽略
先创建.gitignore文件
$ echo *.temp >>.gitignore命令代表所有.temp文件被忽略
分支
为了开发的时候不影响项目,所以不要再项目上直接开发,创建一个分支,功能完成后合并分支到项目
#分支的创建
$ git branch feature-login
#分支的切换
$ git checkout feature-login
#分支合并
$ git merge feature-login
#分支删除
$ git branch -d feature-login