版本控制工具-Git
参考资料:
1. Git 安装
2. Git 基础
版本控制系统只能跟踪文本文件的改动,比如TXT文件、网页、所有的程序代码等等,而图片、视频等二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化。
3. 分支操作*
master 分支只负责管理发布的状态,在提交时使用标签记录发布版本号。
develop 分支是针对发布的日常开发分支。
feature 分支是针对新功能的开发,在开发的时候从 develop 分支分叉出来的,完成开发后,把分支合并回 develop 分支后发布。
release 分支是为 release 做准备的,通常会在分支名称的最前面加上 release-。一般的开发是在 develop 分支上进行的,到了可以发布的状态时再创建 release 分支,为 release 做最后的 bug 修正。到了可以 release 的状态时,把 release 分支合并到 master 分支,并且在合并提交里添加 release 版本号的标签。
hotFix 分支是在发布的产品需要紧急修正时,从 master 分支创建的分支。通常会在分支名称的最前面加上 hotfix-。
3.1 操作分支
创建分支
切换分支
查看分支
切换分支
创建并切换分支
在实际开发应用中,如果要开发一个新功能,我们不建议直接在 master 分支上开发,而是专门创建一个新分支,在新分支上完成开发再 commit/push 合并到 master 分支上,如果后续不再需要特性分支,也可以直接删了特性分支。
3.2 合并分支
合并分支有2种方法:使用 merge 或 rebase:
情况 | 图解 |
---|---|
当前两个分支 | |
merge 合并分支 | |
rebase 合并分支 |
merge:保持修改内容的历史记录,但是历史记录会很复杂。
merge 合并的话 Git 会用两个分支的末端(例如 D 和 Y )和它们的共同祖先(例如 B)行一次简单的三方合并计算。
rebase:历史记录简单,是在原有提交的基础上将差异内容反映进去,可能导致原本的提交内容无法正常运行。
3.3 冲突解决
push 到远程数据库之前需要先 pull 一下,可能存在远程数据库存在冲突的情况,这个时候需要手动解决一下冲突,然后再 push 到远程数据库;或者合并分支的时候也会出现冲突的情况,需要进行冲突解决。
======= 上面的是本地数据库内容,下面的是远程数据库内容,手动修改并删除多余的标示行以解决冲突,然后再次通过 commit 提交,最后再 push 至远程数据库。
4. 修改提交
4.1 撤销更改
类型 | 说明 | 图解 |
---|---|---|
reset | git reset 的作用是修改 HEAD 的位置,即将 HEAD 指向的位置改变为之前存在的某个版本。 | |
revert | git revert 是用于“反做”某一个版本,以达到撤销该版本的修改的目的。 |
reset 存在3种模式:
模式名称 | HEAD的位置 | 索引 | 工作树 | 应用 |
---|---|---|---|---|
soft | 修改 | 不修改 | 不修改 | 只取消提交 |
mixed(默认) | 修改 | 修改 | 不修改 | 复原修改过的索引的状态 |
hard | 修改 | 修改 | 修改 | 彻底取消最近的提交 |
revert 图解说明:想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。
不建议使用 reset,不能随便删除已经发布的提交,通过 revert 安全地取消过去发布的提交。
reset 与 checkout 的区别?
4.2 提取提交
从其他分支复制指定的提交,然后导入到现在的分支。主要使用的场合:
把弄错分支的提交移动到正确的地方
把其他分支的提交添加到现在的分支
5. 打标签
Git可以使用2种标签:轻标签和注解标签。一般情况下,发布标签是采用注解标签来添加注解或签名的。轻标签是为了在本地暂时使用或一次性使用。
添加轻标签
添加注解标签
删除标签
6. 远程仓库
在提交远程分支前,如果当前远程分支别人已经更改了,则需要先获取相关内容进行合并,建议不管如何,提交前最好都执行下git pull --rebase
最后更新于