Git-分布式版本控制

MJX2023/08/12其他工具

Git 是什么

Git 是一个分布式版本控制软件,主要用来做代码管理。这样说你肯定蒙,要想明白 Git 是什么我们只需要理解软件 版本控制 分布式分别是什么?

  • 软件 -> 类似于 QQ、offic、网易云等安装到电脑上使用的工具。
  • 版本控制 -> 论文、代码、海报设计等,不停的更新迭代形成不同的版本。
  • 分布式 -> 简单来说就是多台电脑同时工作,互相不干扰。

集中式与分布式

分布式与集中式

  1. 集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。
  2. 集中式版本控制有安全性问题,因为只有中心服务器拥有一份代码,所以当中心服务器挂了所有人都没办法工作。
  3. 集中式版本控制需要连网才能工作,因为代码存在服务器上,而分布式版本控制不需要连网就能工作,代码存储在每个人的电脑中。

中心服务器

中心服务器用来交换每个用户的修改,没有中心服务器也能工作,但是中心服务器能够 24 小时保持开机状态,这样就能更方便的交换修改。Githubopen in new window 就是一个中心服务器。

为什么要做版本控制

​ 这样可以保留之前的版本,如果有需要可以回滚和修改。如:写着写着发现还是之前之前的方案好;或是写着写着发现写不下去了,想要回退到之前可以使用的版本。

怎么安装

网上教程一堆,这里就步详细介绍了。可以参考 官网open in new window

参考资料

命令参考:https://git-scm.com/docsopen in new window

Git学习:https://www.runoob.com/git/git-tutorial.htmlopen in new window

可视化练习Git:https://learngitbranching.js.org/?locale=zh_CNopen in new window

怎么使用

要想让git对一个项目进行版本控制需要以下步骤:

  1. 进入要管理的项目文件夹

    假设我要管理根文件夹下 project 的项目

    cd /project
    
  2. 执行初始化命令

    git init
    

    提示

    这会在该文件夹下生成 .git 文件,这个文件主要用来存储版本信息,是 Git 工作的核心。

    目录介绍:

    • branches :分支管理目录
    • config :当前项目仓库的配置信息
    • description :当前项目的描述
    • HEAD :当前项目仓库的当前版本信息
    • hooks :当前项目仓库的钩子目录
    • info :仓库相关信息
    • objects :仓库版本信息
    • refs :引用信息
  3. 查看目录下的文件状态

    可以使用 -s 参数来获得简短的输出结果:

    git status
    
    # 注: 新增文件和修改过的文件都红色的
    
  4. 将文件添加入暂存区

    git add 文件名
    git add .
    
    # 注: git add . 表示将所有文件添加入暂存区
    
  5. 配置个人信息:用户名、邮箱【一次即可】

     git config --global user.email "you@example.com"
     git config --global user.name "Your Name"
    

    配置相关操作:

    • 查看所有配置项:git config --list

    • 查看仓库级的 config:git config --local -l

    • 查看全局级的 config:git config --global -l

    • 查看系统级的 config:git config --system -l

  6. 生成版本

    git commit -m '描述信息'
    
  7. 回滚版本

    git reset
    
    # 注: 版本号使 git log 和 git reflog 命令查看
    

    注意

    谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。

远程仓库

  1. 添加远程仓库

    git remote add <shortname> <url>
    git remote  # 查看当前有哪些远程仓库
    
    • shortname:给远程仓库取个名
    • url:远程仓库地址
  2. 克隆远程仓库

    git clone <repo>
    
    • repo:远程仓库地址
  3. 推送代码

    git push <远程仓库名> <本地分支名>:<远程分支名>
    
    # 如果本地分支名与远程分支名相同,则可以省略冒号
    git push <远程主机名> <本地分支名>
    

    注意

    这里的 远程仓库名 就是上面添加远程库取的远程仓库名。

  4. 获取代码

    git pull 其实就是 git fetch 加上 git merge FETCH_HEAD

    git pull <远程主机名> <远程分支名>:<本地分支名>
    

其他操作

  1. 查看版本

    git log  # 或者
    git reflog
    
    git log –p  # 过滤查看日志
      	# 退出按【q】键
      	# ctrl+f向下分页
      	# ctrl+b 向上分页
    
    git log --after  '2018-11-6'  # 显示指定日期之后的日志   
    git log --before '2018-11-6'  # 显示指定日期之前的日志
    git log --author 'lisi'       # 指定显示指定开发者的日志 
    
  2. 分支操作

    git branch             # 查看有哪些分支
    git branch <分支名>     # 创建分支
    git checkout <分支名>   # 切换分支
    git branch -D <分支名>  # 删除分支
    

网上学习资源很多。其余知识在上面 推荐的网站 上均有。