|
|
|
@ -1,216 +0,0 @@
|
|
|
|
|
# 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的工作流程:
|
|
|
|
|
|
|
|
|
|
1. 在工作目录中添加、修改文件 (UserMapper.xml)
|
|
|
|
|
2. 将需要进行版本管理的文件放入暂存区域 (git add.)
|
|
|
|
|
3. 将暂存区域的文件提交到Git仓库 (git commit)
|
|
|
|
|
|
|
|
|
|
> 所以,Git管理的文件有三种状态:modified,staged,committed
|
|
|
|
|
>
|
|
|
|
|
> 颜色区分状态
|
|
|
|
|
|
|
|
|
|
## Git仓库搭建及克隆
|
|
|
|
|
|
|
|
|
|
### 本地仓库搭建
|
|
|
|
|
|
|
|
|
|
> 创建全新的仓库 git init
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
> 克隆远程仓库 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. 提交时,直接修改分支名
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|