Git—分布式版本控制系统基本知识

一、GIT简介

1.什么是GIt

 git 是一个开源的分布式版本控制系统,用于高效的管理各种大小的项目和文件。

2.代码管理工具的用途

  • 防止代码丢失,做备份
  • 项目的版本管理和控制,可以通过设置节点进行跳转。
  • 建立各自的开发环境分支,互不影响,方便合并
  • 在多终端开发,方便代码的项目传输

3.常用代码管理工具

git、svn…

二、GIT基本工作流程

1、Git工作流程

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
    本地仓库工作流程
本地仓库工作流程

2、Git基本操作

Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull。

在这里插入图片描述

总工作流程

说明:

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

3、初始化一个新的git仓库

鼠标右击选择Git Bash Here->输入$ git init

4、向仓库中添加文件和提交

 文件通过添加到暂存区命令格式:$ git add 文件名(注:git add . 则是提交全部文件)
 提交暂存区到本地仓库并记录仓库的改变:$ git commit [file] -m ‘操作详情’(file位置可以是一个或者多个文件,不写是指将暂存区全部内容提交)
 连接远程主机:$ git remote add origin 远程仓库地址
 最后上传远程代码并合并操作:$ git push -u origin main(main仓库的分支,-u第一次提交才加,origin为远程主机名)

5、基础命令

$ git config :初试配置
 git config --system [user.name 用户名]:配置所有用户
 配置文件位置:/etc/gitconfig
 git config --global [user.mail 邮箱]:配置当前用户
 配置文件位置:~/.gitconfig
 git config :配置当前项目
  配置文件位置:project/.git/config
$ git status:查看本地仓库状态。
$ git rm --cached 文件夹名 :撤回提交的暂存文件。
$ git log :查看commit日志记录。
$ git relog :查看所有的commit操作记录。
$ git log --pretty=online :查看commit日志记录,每个提交只显示一行
$ git diff 文件名: 对比工作区和暂存区文件的区别 。

$ git checkout – 文件名:从仓库恢复文件原本的样子,并且还可以通过仓库,恢复通过 $ rm 文件名 删除的工作区本地文件。
$ git checkout 分支名:切换分支

$ git mv [file][path]:移动文件
$ git rm [file]:删除文件
注意:这两个操作会修改工作区内容,同时将操作记录提交到暂存区

6、版本控制

$ git reset --hard HEAD^ :回退到上一个commit节点,一个^表示回退1个版本,依次类推。当版本回退之后工作区会自动和当前commit版本保持一致。
$ git reset --hard [commit_id ]:回退到指定的commit_id节点 (commit全球唯一码前七位),即使是回退到回退前的状态也行,用relog查询唯一码,有标签时,也可以把commit_id 换成标签名
$ git tag [tag_name] (commit_id) -m ‘message’ :在项目的重要commit位置添加快照,保存当前的工作状态,一般用于版本的迭代,commit_id 不写就默认在最新标签查看加标签。如:重要节点处 git tag v1.0 -m ‘版本1’
$ git tag :查看标签
$ git show v1.0 :显示标签详细信息
$ git tag -d 标签名:删除标签

7、保存工作区

$ git stash save ‘message’ :保存工作区内容,说明:将工作区未提交的修改封存,让工作区回到修改前的状态。
$ git stash list :查看工作区列表,说明最新保存的工作区在最上面
$ git stash apply stash@{ 序号} :应用某个工作区,之后可用add、commit提交给仓库
$ git stash drop stash@{ 序号} :删除某个工作区。
$ git stash clear :删除所有工作区。

8、分支管理

意义:分支即每个人在原有(代码)分支的基础上建立自己的工作环境,单独开发,互不干扰。完成开发工作后再进行分支统一合并。
在这里插入图片描述

分支原理图

$ git branch :查看分支情况,说明前面带*的分支表示当前工作分支。
$ git branch -a :加上-a参数,可以查看远程分支,远程分支会用红色表示出来
$ git branch [branch_name]: 创建分支,基于a分支创建b分支,此时b分支会拥有a分支全部内容,在创建b分支时最好保持a分支‘干净’状态
$ git checkout -b 分支名:创建分支并切换到新分支

$ git merge 分支名:合并指定分支到当前分支
注:冲突问题是合并分支过程中最为棘手的问题,当分支合并时,原分支和以前发生了变化就会产生冲突。当合并分支时添加新的模块(文件),这种冲突可以自动解决,只需自己决定commit操作即可。当合并分支时两个分支修改了同一个分支,则需要手动解决冲突。
$ git branch -d 分支名:删除分支
$ git branch -D 分支名:删除没有被合并的分支

9、远程仓库管理

$ git remote add origin 远程仓库地址: 连接远程主机,仅刚开始需要连接
$ git remote rm origin :断开 origin远程主机的连接
$ git clone :克隆远程仓库
$ git push -u origin main :上传远程代码并合并操作。main为仓库的分支名,-u第一次上传新分支才加,origin为远程主机名。连接之后再提交直接git push
$ git push origin (–)tags :上传(所有)标签
$ git push origin --delete tag 标签名 :删除标签名
$ git push origin :远程分支名 :删除远程分支名
$ git push --force origin:强行推送。当前本地分支使用reset后的最新提交落后于其对应的远程分支,更新被拒绝时使用

$ git pull :将远程分支拉取到本地
$ git fetch origin master:tmp :将远程分支master拉取到本地,作为tmp分支
 区别:pull将远程内容直接拉取到本地,并和对应分支内容进行合并,fetch将远程分支内容拉取到本地,但是不会和本地对应分支合并,可以自己判断后再使用merge合并

在这里插入图片描述

详细流程图

参考:
参考一 git—代码管理工具
参考二 git 安装与使用
参考三 git使用详细教程

猜你喜欢

转载自blog.csdn.net/weixin_44195690/article/details/128764727