1.文件的版本
用版本控制软件,易于对比文件变化细节,操作简便,易于回溯,不易丢失,协作方便
git就是目前最先进,最流行的版本控制系统,是一个开源的分布式版本控制软件
2.git
git的版本更新是在原有的版本基础上重新生成一个新的文件,如果文件没有修改,git不再重新储存该文件,而是只保留一个链接指向之前存储的文件,占有磁盘空间大,但是版本切换非常快
git在断网后依然可以版本管理,
git中分为:工作区,暂存区和git仓库三个部分
分别对应三种状态:已修改,已暂存,已提交
git的工作流程基本分为:
工作区中修改文件→暂存修改到暂存区→提交更新
$ git config --global(代表全局) user.name "xxx" //在git bash配置用户名
$ git config --global(代表全局) user.email "xxx@xxx" //在git bash配置邮箱
保存在C:/user/用户名/.gitconfig文件中
不打开文件查看git全局配置信息:
git config --list --global //在git bash中查看全局配置
获取帮助手册,查看命令如何使用:
git help 命令 或者git 命令 -h
例如 git help config/git config -h
1.获取git仓库
可以将上未进行版本控制的本地目录转换为git仓库,或者从其他服务器克隆一个已存在的git仓库
如果要将本地目录转为git,可以在项目目录右键打开git bash,然后执行git init命令
之后会生成一个.git隐藏目录,包含了初始的必要文件
工作区的每一个文件可能有四种状态,分为未被git管理和已被git管理
未被git管理只有一种未跟踪状态(untracked)
已被git管理有未修改状态(Unmodified),已修改状态(modified),已暂存状态(staged)
可以使用git status
查询文件完整状态
可以使用git status -s
来精简查询文件状态
未跟踪的文件精简查询前用红色??表示
要跟踪一个文件,可以使用
git add 文件名.后缀名
一次暂存所有: git add .
添加到暂存区的新文件在精简查询中有绿色的A标记
如果要提交暂存区的更新,可以使用
git commit (-m “提交描述”)
提交后的文件的文件在精简查询中不会显示,处于未修改状态
如果文件修改还没暂存,则会在精简查询中显示红色M
修改后再次加入暂存区,还是可以使用git add命令
重新加入暂存区的文件会以绿色M表示
还原操作所有的修改都会丢失,无法恢复
git checkout -- 文件
可以返回上一次修改的文件
如果要取消已暂存的文件:
git reset HEAD 文件名
移除全部文件:git reset HEAD .
有时也可以跳过暂存区,直接提交到git仓库:
git commit -a (-m “描述信息”)
移除文件:
git rm -f 文件 --- 工作区和仓库都删除文件
git rm --cached 文件 --- 仓库中移除文件,不再跟踪文件
忽略文件:
可以创建一个.gitignore配置文件
#开头是注释
/结尾是以xxx为名的文件夹
/开头是防止递归也就是只忽略当前目录
!开头表示取反
可以使用glob模式进行文件和文件夹的匹配
glob模式就是简化了的正则表达式
*表示匹配零或多个任意字符
[abc]表示匹配任何一个列在方括号中的字符
?表示只匹配一个任意字符
[0-9]短横线表示之间的任何字符包括两端
**表示匹配所有子目录
查看提交历史:
git log --- 列出提交历史,最近的提交在最上面
git log -数字 --- 列出最近的 数字 条历史记录
git log -数字 -- pretty-oneline --- 在一行上列出最近的 数字 条历史记录
git log -数字 --pretty=format:“%h | %an | %ar | %s”
自定义历史信息的输出格式 h表示哈希值,an表示作者名字,ar表示修订日期,s表示提交说明
回退到指定版本:
使用提交历史列出的唯一标识符
git reset --hard 唯一标识符
返回到最新版本:
git reflog --pretty=oneline //列出全部操作历史
git reset --hard 唯一标识符
3.github的使用
在github创建完仓库后,在本地仓库内使用(第一次)
git remote add origin github给出的https链接 //把本地仓库与远层仓库关联
git push -u origin master //把本地仓库的内容推送到远程的origin仓库中
第二次及以上:git push
还可以使用SSH的方式提交:
可以实现免登录身份认证,数据加密传输
首先生成ssh key
在git bash中输入
ssh-keygen -t rsa -b 4096 -C "注册github搜使用的邮箱”
连续敲击三次回车,就能在C:\Users\用户名.ssh目录中生成id_rsa和id_rsa.pub两个文件
其次用记事本打开id_rsa.pub,复制其中内容
之后提交到
github头像-> Settings -> SSH and GPG Keys -> New SSH key
最后在Title文本框中任意填写一个名称,来标识这个Key从何而来
检测SSH是否提交成功:
打开git bash 输入:ssh -T git@github.com
基于ssh上传:
在本地创建完空白仓库和github创建完成空白仓库后,选择SSH部分
在git bash中输入
git remote add origin github给出的ssh链接
git push -u origin master
将远程仓库克隆到本地:
git clone 远层仓库地址(在绿色按钮 clone or download中)
4.分支
分支简单来说就是平行宇宙,多人协作开发的时候,为了防止互相干扰,建议每个开发者都基于分支进行项目开发
在初始化git时,git默认创建了一个master分支,这个分支又称为主分支
主分支用来保存和记录整个项目已完成的功能代码,因此,不允许程序员直接在master分支上修改代码
功能分支是专门用来开发新功能的分支,是临时从主分支上分叉出的分支,新功能开发且测试完毕后,最终需要合并到master分支上
查看分支列表:
git branch //罗列当前仓库所有分支列表,分支名字前有*表示当前所处的分支
创建分支:
git branch 分支名称 //创建一个新分支,新分支和当前分支一样,不会切换分支
切换分支:
git checkout 分支名 //切换到某个分支
快速创建和切换分支:
git checkout -b 分支名称 //创建且立即切换到新分支
合并分支:
git checkout 主分支 //切换到想要合并到的分支
git merge 合并分支名 //合并分支
如果在两个不同的分支中对同一个文件进行了不同的修改,则需要手动打开冲突文件解决冲突
解决后再执行
git add .
git commit
重新提交,告诉git解决了冲突
删除分支:
git branch -d 分支名 //删除某个分支
第一次将本地分支推送到远程仓库:
git push -u 远程仓库的名称 本地分支名称:远程分支名称
例如:
git push -u origin payment:pay
如果是第二次及以上,直接使用git push即可
查看远程仓库分支:
git remote show 远程仓库名称
跟踪分支(从远程下载到本地):
git checkout 远程分支的名称
如果需要修改名字:git checkout -b 本地分支名称 远程仓库名称/远程分支名称
拉取分支(将远程仓库拉取分支最新代码):
git pull
删除远程分支:
git push 远程仓库名称 --delete 远程分支名称