git是什么?
分布式版本控制工具 (git)
集中式版本控制工具 (svn..)
解决的问题:
1. 项目模块分开开发,每个人开发完后的模块需要整个在一起形成一个完成的项目 ,借助git完成整和代码
2. 项目开发是分版本的 (v1/v2....版本)git工具可以控制项目的版本,可以切换任意版本 适应当前需求
git怎么学?
实验科学,做实验,练习
git区别于svn
1. 不管是git 还是svn都是版本控制工具
git能在本地(开发者)形成项目的版本控制 (分不式)不需要借助中央仓库
svn不能在本地(开着者)形成项目的版本控制 (集中式),需要借助中央仓库才能形成版本控制
2. 不管是git和svn 如果要整合别人的代码,必须借助远程中央仓库 (对于git而言远程仓库github)
3. git中大部分的操作都可以‘后悔’ ,但是svn有些操作是不能‘后悔’
git 下载和安装
本地安装git环境: https://git-scm.com/
下载安装包 执行安装(傻瓜式的下一步)
查看git 版本 :
git --version
git version 2.21.0 (Apple Git-122)
git 操作:
git-bash 常用命令
- pwd
- ls
- ls -a
- cd
- mkdir
- clear
- rmdir
- 只能删除空目录
- rm
- rm 文件名
- rm -rf 目录名
- 注:很强大,可以删除非空目录,以及一些比较顽固的文件或者目录
1.如何让git 管理项目(test)
mkdir test
cd test
git init
/*
Initialized empty Git repository in /Users/xuanqiyan/Desktop/1812/git/test/.git/
*/
ll -a (a-->all )
/*
drwxr-xr-x 9 xuanqiyan staff 288B 4 13 15:33 .git /隐藏文件夹
*/
2.告诉git你是谁
git config --global user.name 'xuanqiyan' (global 全局 ,以后计算机 新建别的仓库 都能使用这个name)
git config --global user.email '17310920903@163.com' (global 全局 ,以后计算机 新建别的仓库 都能使用这个email)
//查看配置列表项
git config --list
3.如何不让git管理项目(test)
rm -rf .git
4.如何形成一个版本
touch a.txt 新建文件
echo '1111' >> a.txt //向a.txt 文件中追加一行1111 (修改文件)
git add a.txt
git commit -m '项目版本1'
/*
[master (root-commit) 52ed4d8] v1
1 file changed, 1 insertion(+)
create mode 100644 a.txt
*/
git 中的三个区域
工作区
暂存取
对象区
实验一:形成初始版本
mkdir test
cd test
git init
echo '1111' >> a.txt
git status 查案git中文件的状态
/*
On branch master
No commits yet 还没有任何的提交
Untracked files: tracked 追踪 untracked未追踪
(use "git add <file>..." to include in what will be committed) // 使用git add 将工作区的文件 添加到暂存区
a.txt
nothing added to commit but untracked files present (use "git add" to track)
*/
git add . //将a.txt从工作区添加到暂存区
git status
/*
On branch master
No commits yet 还没有任何的提交
Changes to be committed: //使用commit 提交 形成一个版本
// 使用 git rm --cached <file> 回退到 unstage(工作区)
(use "git rm --cached <file>..." to unstage) //stage 暂存 unstage未暂存
new file: a.txt
*/
//将暂存区a.txt撤销到工作区
git rm --cached a.txt 注意: 在第一次形成版本的时候 使用这个命名
git status
/*
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
a.txt
nothing added to commit but untracked files present (use "git add" to track)
*/
//将a.txt 从工作区 到暂存区
git add .
//将a.txt 从暂存区提交到对象区 commit (版本)
git commit // 打开一个vi 编辑器,编写版本说明 --> git commit -m '这是我的第一个版本'
/*
[master (root-commit) 1c54857] 这是我的第一个版本
1 file changed, 1 insertion(+)
create mode 100644 a.txt
1c54857: 版本号 32位版本号的前7位
*/
git log 查看所有版本的信息
/*
commit 1c548574566c56ffb16eb447dd6c560fd731d741 (HEAD -> master)
Author: xuanqiyan <17310920903@163.com> 作者
Date: Tue Apr 14 15:03:29 2020 +0800 日期
这是我的第一个版本 说明文件
dsdsadasdsada
dsadas
das
*/
实验二:形成第二个版本
touch b.txt
echo 'bbbbb' >> b.txt
git status
/*
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
b.txt
nothing added to commit but untracked files present (use "git add" to track)
*/
git add .
git status
/*
On branch master
Changes to be committed:
//使用 git reset HEAD <file> 把 b.txt文件 从暂存区 撤销到工作区
(use "git reset HEAD <file>..." to unstage)
new file: b.txt
*/
//将暂存区的文件撤回到工作区
git reset HEAD b.txt //一旦形成版本后续的撤销 都要使用这个命令
git add .
git commit -m '这是第二个版本 '
/*
[master 1583335] 这是第二个版本
1 file changed, 1 insertion(+)
create mode 100644 b.txt
*/
git log
/*
commit 15833356e023f8a14c1e7b95584b2a38447c4e71 (HEAD -> master)
sha1 加密算法和md5 重点是为了产生随机字符串 而不是加密
使用随机字符串标示一个版本 ,版本就不可能重复
Author: xuanqiyan <17310920903@163.com>
Date: Tue Apr 14 15:18:11 2020 +0800
这是第一个版本
*/
实验三: 查看提交日志的多种方式
git log 查看所有日志
git log -n 查看最近n次日志
git log --pretty=oneline 一行的形式查看日志
/*
15833356e023f8a14c1e7b95584b2a38447c4e71 (HEAD -> master) 这是第二个版本
1c548574566c56ffb16eb447dd6c560fd731d741 这是我的第一个版本
*/
git log --pretty=format:"%h - %an, %ar : %s"
/*
1583335 - xuanqiyan, 8 minutes ago : 这是第一个版本
1c54857 - xuanqiyan, 23 minutes ago : 这是我的第一个版本
*/
实验四:邮箱账号设置 目的:为了以后在和github交互的时候 区分提交着的信息
git config
/*
--global 1 use global config file 全局: 给整个计算机设置邮箱和账号 --》任何用户创建的git仓库都使用这个邮箱和账号
--system 2 use system config file 用户: 给当前用户设置邮箱和账号 --》用户新建的任何git仓库都使用这个邮箱和账号
--local 3 use repository config file 当前项目(仓库): --》当前这个仓库设置邮箱和账号
*/
优先级: 离仓库最近的设置生效 3 》 2 》 1
//查看配置列表项
git config --list
system 级别 查看config配置
local 级别 查看config配置