# 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. 提交时,直接修改分支名