git学习

发布时间 2023-06-26 22:53:45作者: Frank23

1. 什么是git

git是一种分布式版本控制系统,属于软件配置管理SCM Software Configuration Management)

  • SCM是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件来保证所有配置项的完整性和可跟踪性。

2. 版本控制(version control)

  1. 版本的作用:保存重要的历史记录,若出现错误便于恢复历史数据
  2. 版本控制软件的基本功能
    • 保存和管理文件
    • 提供客户端工具进行访问
    • 比较不同版本文件
  3. 集中式版本控制
    集中式需要解决文件冲突问题,即多个人同时修改一个文件,导致相互覆盖。不同的集中式版本控制软件有不同的解决方法
    • VSS用来解决,当一个用户在修改文件的时候,中央服务器上的文件被锁定,其他用户不能修改该文件
    • CVS、SVN会指定不同的用户修改同一文件不同行的权限,最后将每个人对不同行的修改进行合并
  4. 分布式版本控制
    集中式版本控制的另一大问题是过度依赖中央服务器,如果中央服务器发生损坏会对项目带来严重的负面影响。
    分布式服务器有本地仓库。这样,如果中央服务器发生故障,可以用本地的数据仓库进行对其恢复,提高了数据的安全性。
    git.png

3. github desktop客户端

在客户端中选择本地路径,点击创建仓库(repository),即可创建本地仓库

commit 提交

进入本地仓库的目录下,对文件进行修改,或者创建、删除文件后,客户端会将目录下的文件与本地仓库进行对比,在客户端上会显示文件的差异。
点击commit,并且填写comment描述修改的原因,然后客户端会显示No local changes,表示我们对文件的操作已经同步到了本地仓库。

重点

  1. 仓库路径和本地仓库不是同一个概念!
  2. commit相当于将本地路径中改动提交到本地仓库

History 查看历史提交记录

在客户端中点击History,从上到下是最近到过去的文件改动记录。

版本号

对文件进行操作并提交,并不是将原有的文件覆盖,而是采用不同的版本号对不同文件进行编码git采用40个16进制的数字作为文件版本号

branch 分支(多人协作)

分支相当于仓库的一个副本,在多人协作时每个人只对自己的那个分支进行操作,最后对分支进行合并(如果不同人对同一文件可能对产生冲突,需要在合并的时候解决)
image.png

在下面的图示中,

  • 王五是项目经理,负责管理仓库的main分支
  • 张三开发user模块功能
  • 李四开发order模块功能
    两人分别在自己的分支上进行commit。张三和李四的branch是基于王五管理的main分支创建的

image.png
image.png

创建完成后有三个分支branch
image.png

对不同的分支进行操作,需要在客户端上选择相应的分支,点击show in explorer,跳转到本地路径,在本地进行文件操作,最后在客户端commit到相应的分支。

merge 分支合并

选择不同人开发的分支,合并到main分支(choose branch to merge into main)

conflict 文件冲突

如果多个分支对同一文件进行了修改,合并的时候会出现文件冲突(file conflict),需要人为地进行冲突处理,决定冲突文件应该如何处理。