Bootstrap

【Git笔记】Git基础命令实操

前言

  1. 本篇博客笔记基本上摘自这个视频教学——1小时Git入门到精通

  2. Git版本 2.38.1

  3. 本文共主要介绍了以下Git相关基础操作:
    设置签名、初始化、添加、移除、查看状态、提交、修改、查看日志、版本切换、分支操作(查看、创建、切换、合并)等等……

一、提交到本地仓库

1.1. 设置用户签名

git config --global user.name forever_xxxx
git config --global user.email [email protected]

注:该步只做一次,只在刚装 git 的时候做一次就行了。

1.2. 初始化本地仓库

git init

1.3. 查看本地状态

git status

在这里插入图片描述

1.4. 添加/移除暂存区

新创建的文件是“未跟踪”的状态,需要使用git add命令添加到暂存区

  • git add 文件名
  • git add . 的作用是把当前目录下所有文件都放到暂存区
    在这里插入图片描述

在这里插入图片描述

  • git rm --cached 文件名
    在这里插入图片描述

1.5. 提交本地仓库

git commit [文件名] -m 日志信息

在这里插入图片描述

1.6. 修改已创建、提交的文件

已提交的文件修改后,不需要再次 git add 直接 git commit 即可。

在这里插入图片描述

1.7. 查看日志

1.7.1. git log 查看日志

在这里插入图片描述

1.7.2. git reflog 查看历史日志

在这里插入图片描述

二、版本穿梭 / 版本切换

在这里插入图片描述
命令:git reset --hard 版本号。(使用 git reflog 命令查看历史版本,选中历史版本号,单击鼠标滚轮即可快速粘贴版本号)

在这里插入图片描述

三、Git 分支操作

在这里插入图片描述

3.1. 查看、创建、切换、删除分支

3.1.1. 查看分支

git branch -v

在这里插入图片描述

3.1.2. 创建分支

git branch [分支名]

在这里插入图片描述

3.1.3. 切换分支

  1. git checkout [分支名]
    在这里插入图片描述
  2. git checkout -
    在这里插入图片描述

3.1.4. 切换并创建分支

git checkout -b [分支名]
在这里插入图片描述
由上可知,是在当前所在分支的基础上创建分支

3.1.5. 删除分支和强制删除分支

删除分支:git branch -d [分支名]
强制删除分支:git branch -D [分支名]

在这里插入图片描述

在这里插入图片描述

3.2. 合并分支

3.2.1. 正常合并分支

git merge [分支名]
含义:把指定分支合并到当前分支上,如下图,把 dev-Li 分支合并到 master分支上:
在这里插入图片描述

3.2.1. 冲突合并分支

  1. 执行 git merge [分支名] 命令,提示有冲突,如下所示:
    在这里插入图片描述
    如果有冲突,分支名旁边会提示冲突状态 MERGING

  2. 手动处理所提示文件中冲突的地方
    在这里插入图片描述
    在这里插入图片描述

  3. 加入暂存区
    git add .

  4. 提交到仓库

    • git commit -m '备注'
    • 在这里插入图片描述
    • 通过修改、再次提交、解决冲突的合并,git reflog 会显示commit (merge)

最后,再次切换到dev-Li分支后,使用git merge master命令,不会产生冲突,因为master是更新的版本。
在这里插入图片描述

3.3 分支开发规范

分支开发规范,听完过两天再回忆时基本忘完了,博主认为这种东西还得是实战才行。
博主所在的公司目前使用的是svn,所以相对来说我对svn的分支规范熟悉些。

在使用svn管理代码时,一个项目通常有Trunk、Branches和Tags三个同级目录。

Trunk目录用于存放主版本程序;
Branches目录用于存放分支版本程序,如某个客户的个性定制化需求,开发特定功能的模块亦或者测试等;
Tags目录用于存放发布版本程序。

一般来说所有分支都来自于主版本分支,即Trunk。

总的来说,开发规范会受各公司规章制度、所在行业的影响,不必拘泥于各种教程的描述(但是可参考或学习他人、大厂的较为成功的规范),根据实战来即可。

四、最后

看到最后有没有发现git、svn他们的命令很多都很相似,这种工具类技能掌握一个就能很快上手另一个,应用上差别不大。

;