From 4a95c746e811e1cf38e655be96857e2c85663498 Mon Sep 17 00:00:00 2001 From: ghghvn <3208299875@qq.com> Date: Wed, 22 Mar 2023 20:09:23 +0800 Subject: [PATCH] one commit --- Git.md | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 Git.md diff --git a/Git.md b/Git.md new file mode 100644 index 0000000..5b1aff3 --- /dev/null +++ b/Git.md @@ -0,0 +1,216 @@ +# Git(李明霞) + +我试了将本地分支同步到远程分支的操作。首先想到的是有没有啥快捷方式,然后就找到了这样的一条指令 + +> git push --set-upstream origin 分支名 + +但是并没有成功,出现了错误 + +``` +SSL certificate problem:unable to get issuer certificate +``` + +我查了一下是因为在通过HTTPS访问Git远程仓库时,如果服务器SLL证书未经过第三方机构认证,就会报错。(未知的没有签署过的证书意味着可能存在很大的风险。 + +solution->将git中的sslverisy关掉 + +``` +git config --global http.sslverify false +``` + +但是最终也没有解决这个问题,具体原因也还没有找到。 + +#### 一些一二阶段学习的感想 + +说实话,虽然已经大二了,但是我对目前这几天接触到的东西一无所知,Markdown、Typora、Git、Github...感谢Geek给我带来的改变,虽然我完成的并不好,但我可以感受到我这两天思考、时间管理方面的改变。 +1.关于Typora:使用起来很方便,我的感觉是比word更适合个人文件、笔记的整理,在设计分级标题、表情、强调方面有很大的优点,而且很美观,我觉得未来的我会爱上它的便捷与美观。 +2.Git学习:学习并不深入,只是简单学习了一些Git分支的指令及四个工作区域的简单了解。(时间安排问题,搜索资料、视频效率问题) + +## 版本控制 + +是一种在开发的过程中用于管理我们对文件、目录、工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前版本的软件工程技术。 + +> 版本控制特点: + +* 实现跨区域多人开发 +* 追踪和记载一个或多个文件的历史记录(前身后世的追溯) +* 组织和保护源代码和文档 +* 统计工作量 +* 并行开发、提高工作效率(方便代码合并) +* 跟踪记录整个软件的开发过程 +* 减轻开发人员的负担,节省时间,同时降低人为错误 + +常见版本控制工具:==Git==(分布式版本控制系统)、SVN(集中版本控制系统:受网络影响大、中央出问题的话,其他都会收到很大影响)、VSS... + +分布式版本控制系统特点:每个人都拥有全部的代码 + +> 如果每个人都有全部的代码, + +## Git历史 + +Linux、Git之父李纳斯在吸取了BitKeeeper的经验教训后,花两周左右的时间开发了自己的版本系统Git。(聪明人的时间与效率) + +Git是目前最先进的分布式版本控制系统。 + +## Git的版本回滚 + +> 以下内容没有全部实践过 + +### 情况一:未提交未push + +#### 变更文件 + +rollback操作(右键文件-Git-rollback) + +#### 新建文件 + +直接删除 + +### 情况二:提交但未push + +#### undo commit + +只适用于最后一次的提交 + +#### drop commit + +回滚任意一次的提交,且不留痕迹 + +#### revert commit + +会留下一条新的commit记录or一条revert记录 + +:crayon:drop 与revert在中间回滚可能会发生冲突 + +#### reset + +批量回滚 + +##### soft + +commit内容会保留,新增的内容被放在暂存区,文件的变更在暂存区 + +##### mixed + +commit内容会保留,新增的内容被放在工作区,文件变更在暂存区 + +##### ==hard== + +选定提交后面所有的更改全部都丢弃,包括暂存区与已提交内容 + +##### keep + +把选定提交之后的内容丢弃(commit文件会被删除),本地未提交内容得以保留(保留本地更改) + +### 情况三:提交且已push + +一般来说,Git都是保护远程的分支的已提交内容不被变更,即远程分支的基是不允许被改变的。想要回滚远程记录,就相当于让远程的基发生了变更,普通的Git push会被拒绝。 + +#### reset+forcr push + +### 情况四:找回代码 + +找回被roll back的代码 + +##### locial history-revert + +## Git基本理论-四个工作区域 + +> Git 本地有三个工作区域 + +* 工作区(Workspace):存放项目代码的地方。 + +* 暂存区(Stage):存放临时的改动,事实上它只是一个文件,保存即将提交到文件列表信息。 + +* 资源库(Repository):安全存放数据的位置,这里面有提交到所有版本的数据。其中 HEAD 指向最新放入仓库的版本。 + +> Git 远程有一个工作区域 + +* 远程库(Remote):托管代码的服务器,可以简单的认为是项目组中的一台电脑,用于远程数据交换。 + +![Git四个区域](https://img2022.cnblogs.com/blog/2002528/202202/2002528-20220219153109587-832668507.png) + +> Git的工作流程: + +1. 在工作目录中添加、修改文件 (UserMapper.xml) +2. 将需要进行版本管理的文件放入暂存区域 (git add.) +3. 将暂存区域的文件提交到Git仓库 (git commit) + +> 所以,Git管理的文件有三种状态:modified,staged,committed +> +> 颜色区分状态 + +## Git仓库搭建及克隆 + +### 本地仓库搭建 + +> 创建全新的仓库 git init + +![image-20221101220823632](../../AppData/Roaming/Typora/typora-user-images/image-20221101220823632.png) + +> 克隆远程仓库 git clone + +## Git分支 + +* 分支和main的关系就像是两个平行宇宙,如果两个区块互不干扰,就没有影响,但是如果需要将它们合并,我们就需要做一些处理。 + +> git分支中常用的分支命令 + +| 功能 | 指令 | +| :----------------------------: | :------------------------------------: | +| 列出所有本地分支 | git branch | +| 列出所有远程分支 | git branch -r | +| 新建分支,但依然保留在当前分支 | git branch [branch-name] | +| 新建分支,并切换到该分支 | git checkout -b [branch] | +| 合并指定分支到当前分支 | git merge [branch] | +| 删除分支 | git branch -d [branch-name] | +| 删除远程分支1 | git push origin --delete [branch-name] | +| 删除远程分支2 | git branch -dr [remote/branch] | +| 切换分支 | git checkout 分支名 | +| 本地分支->远程分支 | git push --set-upstream origin 分支名 | +| | | +| | | +| | | +| | | + +> 多个分支并行执行,我们的代码也不会冲突,也就是存在多个版本 +> +> 如果同一个文件在合并分支时都被修改了则会引起冲突。solution->修改冲突文件后重新提交 +> +> 体会:main分支应该要保证有极强的稳定性,用来发布新版本,一般不允许在上面工作,工作一般在新建的分支下,工作完成后,比如要发布或分支代码稳定后可以合并到main分支上(组合套装)。 + +#### 创建分支 + +1. 直接在Github上新建一个分支 +2. 开发工具New Branch +3. 右键项目-Git-Branches +4. 提交时,直接修改分支名 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +