Git 文件状态
Git 文件 2 种状态:
- 未跟踪:新文件,从未被 Git 管理过
- 已跟踪:Git 已经知道和管理的文件
常用命令
命令 | 作用 | 注意 |
---|---|---|
git -v | 查看 git 版本 | |
git init | 初始化 git 仓库 | 初始化之后有工作区、暂存区(本地库)、版本库 |
git add 文件标识 | 暂存某个文件 | 文件标识以终端为起始的相对路径 |
git add . | 暂存所有文件 | |
git commit -m'说明注释' | 提交产生版本记录 | 每次提交,把暂存区内容快照一份 |
git status | 查看文件状态-详细信息 | |
git status -s | 查看文件状态-简略信息 | 第一列是暂存区状态,第二列是工作区状态 |
git ls-files | 查看暂存区文件列表 | |
git restore 文件标识 | 从暂存区恢复到工作区 | 如果文件标识为.则恢复所有文件 |
git rm --cached 文件标识 | 从暂存区移除文件 | 不让 git 跟踪文件变化 |
git log | 查看提交记录-详细信息 | |
git loa --oneline | 查看提交记录-简略信息 | 版本号 分支指针 提交时说明注释 |
git reflog --oneline | 查看完整历史-简略消息 | 包括提交,切换,回退等所有记录 |
git reset 版本号 | 切换版本代码到暂存区和工作区 | soft 模式保留暂存区和工作区原本内容; hard 模式不保留暂存区和工作区原本内容 ; mixed 模式不保留暂存区,工作区保留(默认)先覆盖到暂存区,再用暂存区对比覆盖工作区 |
git branch 分支名 | 创建分支 | |
git branch | 查看本地分支 | |
git branch -d 分支名 | 删除分支 | 请确保记录已经合并到别的分支下,再删除分支 |
git checkout 分支名 | 切换分支 | |
git checkout -b 分支名 | 创建并立刻切换分支 | |
git merge 分支名 | 把分支提交历史记录合并到当前所在分支 | |
git remote add 远程仓库别名 远程仓库地址 | 添加远程仓库地址 | 别名唯一,地址是.git 结尾的网址 |
git remote -v | 查看远程仓库地址 | |
git remote remove 远程仓库别名 | 删除远程仓库地址 | |
git pull 远程仓库别名 分支名 | 拉取 | 完整写法:qit pull 远程仓库别名 远程分支名:本地分支名等价于:git fetch 和 git merge |
git push 远程仓库别名 分支名 | 推送 | 完整写法:git push 远程仓库别名 本地分支名:远程分支名-u:建立通道后以后可以简写 git push |
git pull --rebase 远程仓库别名 分支名 | 拉取合并 | 合并没有关系的记录 |
git clone 远程仓库地址 | 克隆 | 从0得到一个远程的Git仓库到本地使用 |
Git 远程仓库
需求:创建远程版本库,并把本地 Git 仓库推送上去保存
步骤:
1.注册第三方托管平台网站账号
2.新建仓库得到远程仓库 Git 地址
3.本地 Git 仓库添加远程仓库原点地址
javascript
git remote add 远程仓库别名远程仓库地址
例如: git remote add origin https://gitee.com/lidongxu/worktest.git
4.本地 Git 仓库推送版本记录到远程仓库
javascript
git push -u 远程仓库别名 本地和远程分支名
例如: git push -u origin master
Git 远程仓库-克隆
克隆:拷贝一个 Git 仓库到本地,进行使用
javascript
git clone 远程仓库地址
例如:git clone https://gitee.com/lidongxu/work.git
效果:在运行命令所在文件夹,生成 work项目文件夹(包含版本库,并映射到暂存区和工作区)
注意1:Git 本地仓库已经建立好和远程仓库的链接
注意2:仓库公开随意克隆,推送需要身为仓库团队成员
Git 暂存区使用
暂存区:暂时存储,可以临时恢复代码内容,与版本库解耦
暂存区 ->覆盖 ->工作区,命令:git restore 目标文件(注意: 完全确认覆盖时使用)
Git 回退版本
概念:把版本库某个版本对应的内容快照,恢复到工作区/暂存区
查看提交历史: git log--oneline
回退命令:
javascript
git reset --soft 版本号(其他文件未跟踪)
git reset --hard 版本号
git reset--mixed 版本号(与 git reset 等价)
soft 回尽可能保留工作区和暂存区的文件
hard 回退回清理工作区和暂存区文件 (日常用的多的模式)
mixed 默认的模式, 工作区会保留,暂存区会被清理
注意1:只有记录在版本库的提交记录才能恢复
注意2:回退后,继续修改->暂存->提交操作即可(产生新的提交记录过程)
分支创建
1、创建分支:
javascript
git branch 分支名
2、切换分支:
javascript
git checkout 分支名
本地仓库中的所有分支
javascript
git branch
暂存本地
javascript
git add .
git commit -m '提交测试git'
查看提交的记录
javascript
git log --oneline
分支合并
分支-合并与删除
要求 : 把 login-bug 合并回到 master分支并删除login-bug 分支。
步骤:
1.切回到要合入的分支上:git checkout master
2.合并其他分支过来:git merge login-bug
3.删除合并后的分支指针:git branch -d login-bug
分支-合并冲突
需求1:基于 master 新建 publish分支,完成发布文章业务,然后修改内容页面的 html文件的 title 标签,并提交一次。
需求2:切换到 master,也在修改内容页面的 html文件的 title 标签,并提交一次冲突:把 publish 分支合并到 master 回来,产生合并冲突。
概念:不同分支中,对同一个文件的同一部分修改,Git无法干净的合并,产生合并冲突
在执行git merge publish命令的时候会产生冲突。如下
解决:
1.打开 VSCode 找到冲突文件并手动解决
2.解决后需要提交一次记录
- 采用当前更改:当你选择这个选项时,VSCode
将会保留你的本地更改,并忽略来自其他分支或提交的更改。这通常用于当你认为你的更改是正确的,而远程的更改可以被覆盖的情况 - 采用传入的更改:相反地,如果你选择这个选项,VSCode
将会应用来自其他分支或提交的更改,并覆盖你的本地更改。这通常用于当远程更改更重要,或者你需要更新到最新的状态时 - 保留双方更改:如果你选择保留双方的更改,VSCode 将会在冲突的代码段中包含两个版本的更改。这通常会导致在源代码文件中留下类似
<<<<<<< HEAD 和 >>>>>>> branch-name 的标记,需要你手动编辑文件以合并这两个版本 - 比较变更:这个选项允许你在合并之前查看两个更改之间的差异。你可以通过一个内置的差异查看器来对比当前和传入的更改,这有助于你理解冲突的本质并决定如何解决它们。在比较之后,你可以手动选择要保留的部分,或者使用上述选项之一进行自动处理
忽略文件
概念:.gitignore 文件可以让 git 彻底忽略跟踪指定文件
目的:让 git 仓库更小更快,避免重复无意义的文件管理
例如:
1.系统或软件自动生成的文件
2.编译产生的结果文件
3.运行时生成的日志文件,缓存文件,临时文件等
4.涉密文件,密码,秘钥等文件