git版本控制
- 项目模块小组分开开发,每个人开发完后需要整个成一个整体的项目 ,借助版本控制工具来解决
- 项目是开发是过程化的,(v1.0 --> v1.1 --> v1.2 --> v2.0)用版本控制工具,轻松切换每一个版本
版本控制工具分类
git (分布式)
svn (集中式)
区别:
-
不管git 还是svn 都是版本控制工具都能形成版本(version )
git能在开发者本机形成自己的版本version控制,但是svn 必须提交中央服务器才能形成版本-
不管是git还是svn 如果是要代码合并,必须都要依靠中央服务器
-
在git中大部分 “合法操作” 都是可以撤回的 ,但是在svn中有些操作是不可以撤回
-
使用
1.git运行在linux内核上
1.1下载: git 官网 下载安装包 傻瓜式安装(下一步)
1.2检查git 是否安装成功
桌面右击 --》 git bash here --> 用git bash 交互窗口打开当前目录 (内部可以写linux命令)
1.3常用的linux命令
cd
--> change
diretory --> 切换目录
-
cd ~ 切换到用户家目录
-
cd - 切换到上一个目录位置
ls
--> list
--> 列出当前目录下的显示的文件和文件夹
-
-a 查看所有文件包括隐藏文件 linux 中以.开头的文件就是隐藏文件 ./ …/ .abc.txt
-
-l 以长格式查看文件和文件夹
touch
文件名 --> 创建文件和更新已存在文件的访问时间
mkdir
文件夹名 --> 创建文件夹
cat
文件名 --> 查看文件内容
echo
’ ’ > 终端(文件) --> 输出 字符串
> 覆盖写
>> 追加写
mv
原文件夹/文件 目标位置/重命名 --> 移动文件、重命名
cp
文件 位置/文件名 --> 拷贝文件
cp
-r 目录 位置/目录名 --> 拷贝目录
pwd 打印当前的工作目录
ctrl + a 前置光标
ctrl + e 后置光标
ctrl + c 放弃当前行命令状态 开启下一行
clear 清屏
history 查看历史命令
rm
-rf 文件/文件名 -->
文件修改 --》 编辑文件内容
目录修改 --> 目录重命名 删除 ,目录内部文件的增删改
window 文件是按照文件后缀名区分文件类型 但是linux 中 他不是以文件后缀名区分文件类型的 (linux中所有的类型都是文件 ,正式因为这样linux系统相对安全)
1.4linux 中的 权限
d rwxr-xr-x 1 xuanqiyan 197121 0 May 17 08:45 git/
rwx (所有者) r-x (所属组) r-x (其他人)
r : read 读取
w : write 写
x : execute 执行
2.基本实验
2.1如果是第一次操作git 需要设置email 和 name
设置:
-
git config --global user.name “”
-
git config --global user.email “”
查询:
-
git config user.name
-
git condfig user.emai
删除:
- git config --local --unset user.name
- git config --local --unset user.email
作用: 是提交代码或者本地形成版本需要根据 name 和 email 识别这个版本作者是谁
2.2将1一个原始的文件夹 变成 git 所能控制的git仓库
git init
作用: 在当前目录下形成一个.git这样的隐藏文件夹 还有master分支(默认主分支)的显示
2.3如何形成一个版本
touch a.txt
echo "代码" >> a.txt
git add a.txt
git commit -m '版本说明'
2.4查看提交版本的历史
git log
3.git中的区域
3个区域: 工作区 暂存区 对象区
补充命令:
- git status 查看当前git仓库所有中文件的状态
3.1重新执行2 针对每一次操作查看状态
echo 'aaa' >> a.txt
git status --》 查看git仓库中的文件状态
/*
On branch master //在主分支master上
No commits yet //还没有任何提交
Untracked files: // untarcked 未追踪 文件:(tracked追踪 )
(use "git add <file>..." to include in what will be committed) //使用git add 将未追踪的文件 加入到commit之前的区域 (暂存区)
a.txt // 未追踪的文件
*/
git add a.txt
git status
/*
On branch master
No commits yet
Changes to be committed: // 暂存区的内容可以被提交 形成版本
(use "git rm --cached <file>..." to unstage) //可以使用 git rm --cached <file> 将暂存区的文件重新撤销到工作区
new file: a.txt // 对于暂存区有一个新的追踪的文件a.txt 加入
*/
git commit -m '第一次提交'
git status
/*
On branch master
nothing to commit, working tree clean // 暂存区清空了 工作区 clean 意思是工作区所有的文件都形成版本了,对象区区的最新的版本和工作区的内容完全一致 ,这叫 clean (清空),而不是工作区的文件丢失或者隐藏
*/
3.2如何将暂存区的内容重新拉回到工作区
-
mkdir test && cd test && git init
-
touch a.txt
echo ‘aaa’ >> a.txt -
git add a.txt
-
git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage) //目的: 将暂存区的a.txt 拉回到unstage 状态(工作区)
new file: a.txt
- 执行撤销
git rm --cached a.txt
注意: 如果第一次从暂存区撤销到工作区 使用这个命令
rm 'a.txt' 从暂存区删除了 到工作区了
- git status
发现 回到一开始未add之前的状态
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
a.txt
3.2提交多个版本 以及日志查看方式
- mkdir test && cd test && git init
- touch a.txt b.txt
echo 'aaaa' >> a.txt
echo 'bbbb' >> b.txt
-
git add .
// 注意: 这个 “.” 指的是 相对于上一次提交的本版而言工作新所有更改(新增 删除 修改)的文件 -
git commit
注意:如果commit时候没有 加-m 参数 会打开vi编辑器 让你输入版本说明文字 ,说明文字可以多行输入 -
第一个版本形成了
git log 查看提交日志 -
touch c.txt
echo 'cccc' >> c.txt
-
git add .
-
git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: c.txt
- git restore --staged c.txt
注意: 都是从暂存区撤销到工作区,但是命令不一样,因为此时第二次加入到工作区了,以后每一次撤销都是用这个命令
- git commit -m ‘xxx’
不能直接提交,因为暂存区没有任何何以提交的内容
-
git add .
-
git commit -m ‘第二个版本’
-
git log --》 查看所有日志
commit cb98a0d2743b70f49b9c1606fc999ec3f2c1a477 (HEAD -> master)
Author: Yanzhijie <1730903@163.com>
Date: Tue May 18 10:34:33 2021 +0800
第二个版本
commit f851d27133b2e057db3e6eefbb3d256bdeceafaa
Author: Yanzhijie <1730903@163.com>
Date: Tue May 18 10:19:27 2021 +0800
这是第一次提交
这个代码很棒
这是我写的
- 多种方式查看日志
git log -n
--> 查看最近几次提交日志
git log --pretty=oneline
--> 以单行查看日志内容
git log --pretty=format:"%h - %an ,%ar : %s
"
git优势
-
能在本地和服务器形成版本控制
-
git的版本成重写提交说明
svn 不可以重写提交说明 -
git 一般都可以撤回‘后悔’
-
git 强大的分支系统,每个分支都有独特的函数
master --> 主分支 --> 不直接做开发 分支代码稳定,直接上线发布
dev --> 开发分支 --> 开发代码的分支
test --> 测试分支 --> 测试人员 测试代码安全性能分支分支:
版本形成的提交线路 -
git形成版本 (全量备份 ) svn (增量备份)
git: 每个版本保存全部代码文件 (修改的和未修改的)
svn: 每个版本只保存修改的代码 (修改的代码 项目不完整)
总结
- git是一个版本管理工具
- git可以帮我们托管代码,每一次提交信息都会被记录在git仓库
- git可以帮我们管理代码,后续我们都是团队开发,每一个开发一个功能,通过git可以帮我们把代码进行整合