这是我参加「第四届青训营」笔记创作活动的第5天
今天是学习Git操作的内容。
Git中三个仓库
-
工作区
- 处理工作地区
-
暂存区
- 临时存放地区
-
Git仓库
- 最终存放地区
Git中三种状态
-
已修改 modified
- 修改了还没放到暂存
-
已暂存 staged
- 对修改文件标记了,放在下次提交列表中
-
已提交 committed
- 文件已经安全保存在本地的git仓库中
配置用户信息
git config --global user.name "用户名"git config --global user.email "邮箱"
检查配置用户信息
查看所有的全局配置项
git config --list --global
查看指定的全局配置项
git config user.namegit config user.email
获取帮助信息
git help <verb> 例如 git help config 浏览器展示
git config -h 终端展示
获取Git仓库的方式
-
将尚未进行版本控制的本地目录转换为Git仓库
- 在项目目录中,通过鼠标右键打开“Git Bash”
- 执行
git init命令将当前的目录转化为Git仓库
-
从其它服务器克隆一个已存在的Git仓库
工作区文件的4种状态
-
未被git管理
- 未追踪(Untracked) 不被Git所管理的文件
-
已被git管理
-
未修改(Unmodified)
- 工作区中文件的内容和Git仓库中的文件内容保持一致
-
已修改(Modified)
- 工作区文件的内容和Git仓库中文件的内容不一致
-
已暂存(Staged)
- 工作区中被修改的文件已被放到暂存区,准备将修改后的文件保存到Git仓库中去
-
检查文件的状态
可以使用git status命令查看文件处于什么状态(git status -s精简形式)
跟踪新文件
使用命令git add开始跟踪一个新文件例如:git add 1.html
清空屏幕
clear操作
提交更新
现在暂存区中有一个index.html文件等待被提交到Git仓库中保存。可以执行git commit命令进行提交,其中**-m选项后面是本次的提交信息**,用来对提交的内容做进一步的描述:
git commit -m "新建了1.html文件"
先跟踪在提交
对已提交文件进行修改
修改后就是已修改(红色M)状态,如果要暂存这次修改需要再次运行git add命令(绿色M)
提交已暂存的文件
再次运行git commit -m命令
撤销对文件的修改
撤销对文件的修改指的是:把对工作区中对应的文件的修改,还原成Git仓库中所保存的版本。操作的结果:所有的修改会丢失,且无法回复!危险性比较高,慎重操作!
git checkout -- 1.html
向暂存区中一次性添加多个文件
git add .
取消暂存的文件
git reset HEAD 要移除的文件名称
git reset HEAD 1.html
移除暂存区所有文件
git reset HEAD .
跳过使用暂存区
加一个-a直接提交至git仓库
git commit -a -m "描述信息"
移除文件
-
从Git仓库和工作区中同时移除文件
git rm -f 1.js
-
只从Git仓库中移除1.css,但保留工作区中的1.css文件
git rm --cached 1.css
忽略文件
一般一些文件无需纳入Git的管理,也不希望他们总出现在未跟踪文件列表。在这种情况下,我们可以创建一个名为 .gitignore 的配置文件,列出要忽略的文件的匹配模式。新建一个配置文件
-
以 #开头的是注释
-
以 /结尾的是目录
-
以 /开头防止递归(只忽略当前目录下)
-
以 !开头表示取反
-
可以使用glob模式进行文件和文件夹的匹配(glob指简化了的正则表达式)
- 星号* 匹配零个或多个任意字符
[abc]匹配任何一个列在方括号中的字符(此案例匹配一个a或一个b或匹配一个c)- 问好? 只匹配任意一个字符
- 方括号中使用短划线分割两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0~9]表示匹配0到9的数字)
两个星号**表示匹配任意中间目录(比如a/**/z可以匹配a/z、a/b/z或者a/b/c/z等)
查看提交历史
-
按时间先后顺序列出所有提交历史
git log
-
只展示最新两条提交历史
git log -2
-
在一行上展示最近两条提交历史信息
git log -2 --pretty=oneline
-
在一行上展示最近两条提交历史信息,并自定义格式;
-
%h提交的简写哈希值;%an作者姓名;%ar作者修改日期,按多久以前的方式显示;%s提交说明git log -2 --pretty=format:"%h | %an | %ar | %s"
-
回退到指定的版本
-
在一行上展示所有的提交历史
git log --pretty=online
-
使用
git reset --hard命令,根据指定的提交ID回退到指定版本git reset --hard <CommitID>
-
在旧版本中使用
git reflog --pretty=online命令,查看命令操作的历史git reflog --pretty=online
-
再次根据最新的提交ID,跳转至最新的版本
git reset --hard <CommitID>git reset --hard 28dd9c5
GitHub
git push
生成SSH key
- 打开Git Bash
- 粘贴如下命令
ssh-keygen-t rsa -b 4096 -C"邮箱"
配置SSH key
- 打开id_rsa.pub文件,复制内容
- 登录Github ,点击头像->settings->SSH and GPG Keys->New SSH key
- 粘贴内容
- 在Title文本框填写一个名称,标志Key从何而来
检测是否配置成功
ssh -T git@github.com
将远程仓库克隆到本地
git clone 远程仓库地址
分支
-
查看分支
git branch
-
创建分支
git branch 分支名称
-
切换分支
git checkout 分支名称
-
创建并切换
git checkout -b 分支名称
-
合并分支
- 修改完提交
-
- 切换到主分支 main
git checkout main- 使用
git merge 分支
-
删除分支
git branch -d 分支名称
-
冲突时打开文件手动解决
-
将本地分支推送到远程仓库
-
-
-u 表示把本地分支和远程仓库进行关联,只有在第一次推送时需要
git push -u 远程仓库别名 本地分支名称:远程分支名称- 实例
git push -u origin payment:pay - 如果希望名称保持一致可以
git push -u origin payment
-
-
-
查看远程仓库中所有分支列表
git remote show 远程仓库名称
-
跟踪分支(把远程仓库中的远程分支下载到本地仓库)
-
git checkout 远程分支名字git checkout pay
-
下载远程分支并重命名
-
git checkout -b 本地分支名称 远程仓库名字/远程分支名称git checkout -b payment origin/pay
-
-
拉取远程分支最新的代码
git pull
-
删除远程仓库分支
git push 远程仓库名称 --delete 远程分支名称git push origin --delete pay
-