0

0

0

修罗

站点介绍

只有了解事实才能获得真正的自由

Git(一)本地操作

修罗 2020-04-10 1531 0条评论 版本控制

首页 / 正文

目录

一、Git概述

1、Git工作机制

1.1 本地库工作机制

Git使用本地库在我们本地的电脑上就可以记录版本信息,不需要联网。

img005.png

1.2 代码托管中心

代码托管中心负责维护远程库,让团队成员可以彼此协作。

  • 局域网

    Gitlab:如果有特殊需求不能使用外网的代码托管中心,可以在局域网内搭建自己的代码托管中心服务器。

  • Internet

    GitHub:国外网站,有非常多优秀的开源项目托管代码,但是从国内访问很慢。

    码云:国内的代码托管中心,在国内互联网开发圈子中的地位举足轻重。

1.3 远程库工作机制

团队内协作

img006.png

跨团队协作

img007.png

二、本地库命令行基本操作

1、初始化本地库

创建一个目录,使用命令初始化为本地库,会生成.git文件。。

git init

2、设置用户签名

签名区分不同操作者身份。签名信息在每一个版本的提交信息中能够看到。
注意:这里设置用户签名和将来登录GitHub的账号没有任何关系。

git config --global user.name xiuluo
git config --global user.email 136366514@qq.com

执行生成配置文件

1640089124828.png

3、创建文件并进行版本控制

3.1 新建文件

新建hello.txt

3.2 查看本地库状态

git status

1640089199974.png

3.3 追踪文件并添加到暂存区

git add 文件

#提交全部
git add . 

该命令有两个作用:

  • 对“未追踪”的文件进行追踪,也就是加入版本控制体系,被Git管理。
  • 将工作区的变动(新增和修改)添加到暂存区

1640089347611.png

3.4 再次查看本地库状态

检测到有新建的文件添加到了暂存区

1640089625224.png

3.5 将暂存区中的修改提交到本地库

git commit -m "本次提交描述" 提交文件

1640089669843.png

3.6 提交完成后再查看本地库状态

1640089732438.png

4、修改文件进行版本控制

4.1 修改文件后查看本地库状态

1640089953009.png

4.2 工作区文件修改后添加到暂存区

1640090052746.png

4.3 后续操作

提交后再次查看状态,如果操作正确应该还是看到“working tree clean”。

1640090076427.png

5、不add直接commit

两种情况:

  • 新建的文件尚未纳入版本控制体系:必须先add纳入版本控制体系后才可以commit
  • 已纳入版本控制体系的文件被修改:可以不add直接commit,Git自动执行了add

6、版本穿梭

6.1 查看版本记录

git reflog

1640090377846.png

6.2 切换到指定版本

git reset --hard 版本号

切换到第一个版本

1640090629647.png

从第一个版本修改hello.txt后再次提交

1640090880198.png

6.3 底层其实是移动HEAD指针

img028.png

三、本地库命令行分支操作

1、什么是分支

在使用版本控制工具开发的过程中,同时推进多个任务

img029.png

2、分支的好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

3、分支操作

3.1 创建分支和切换分支

查看分支

git branch -v

1640091835888.png

创建分支

git branch 分支名

切换分支

git checkout 分支名

1640091972187.png

3.2 分支的底层实现

Git的分支操作之所以能够非常平滑,就是因为创建分支时,Git底层并没有把本地库中的内容复制出来,而仅仅是创建新的指针。有新版本提交后移动指针。

img030.png
master、hotfix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。
所以创建分支的本质就是多创建一个指针。
HEAD如果指向master,那么我们现在就在master分支上。
HEAD如果指向hotfix,那么我们现在就在hotfix分支上。
所以切换分支的本质就是移动HEAD指针。

3.3 在两个不同分支分别做不同修改

hotfit分支修改

1640092617600.png

提交

1640092708451.png

切换主分支修改hello.txt

git checkout master

vim hello.txt

git add hello.txt
git commit -m "fifth commit"

1640092976866.png

img031.png

3.4 分支合并

img032.png

合并分支时一定是涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”。
命令写法:git merge 目标分支
所以分支合并命令的本质就是把“目标分支”合并到“当前分支”。

例如:把hotfix合并到master
git merge hotfix
需要确保当前所在的分支是master

例如:把master合并到hotfix
git merge master
需要确保当前所在的分支是hotfix

4、冲突

分支合并时,如果同一个文件的同一个位置有不同内容就会产生冲突。

1640093141462.png

4.1冲突的表现

1640093267333.png

Git使用<<<<<<<=========>>>>>>>>>>标记出来产生冲突的内容。

  • 表示HEAD指针指向的位置(其实就是当前分支)在冲突中的内容
<<<<<<< HEAD
hello world git2 fifth
=======
  • 表示hotfix指针指向的位置在冲突中的内容
=======
hello world git2 fourth
>>>>>>> hotfix

所以所谓冲突其实就是让我们在这二者中选择一个,Git无法替我们决定使用哪一个。必须人为决定新代码内容。

此时使用git status命令查看本地库状态

1640093442180.png

4.2 冲突的解决

[1]第一步

编辑有冲突的文件,删除特殊符号,决定要使用的内容

1640093527413.png

[2]第二步

添加到暂存区git add hello.txt

使用git status命令查看本地库状态

1640093597189.png

[3]第三步

执行提交

1640093842704.png

评论(0)


最新评论

  • 1

    1

  • 1

    1

  • -1' OR 2+158-158-1=0+0+0+1 or 'TKCTZnRa'='

    1

  • 1

    1

  • 1

    1

  • 1

    1

  • 1

    1

  • @@5Qa2D

    1

  • 1

    1

  • 1

    1

日历

2025年09月

 123456
78910111213
14151617181920
21222324252627
282930    

文章目录

推荐关键字: Linux webpack js 算法 MongoDB laravel JAVA jquery javase redis