当前位置: 首页 > news >正文

Git版本控制完全指南

目录

1.简介

2.前期工作

3.配置git

3.1配置命令

3.2解决乱码问题

4.本地仓库

4.1获取本地仓库

4.2操作流程图

4.3基础操作命令

4.4回退版本命令

​编辑4.5添加文件到忽略列表

5.分支

5.1常见分支命令

5.2解决冲突

​编辑

5.3实际开发的分支使用原则

6.git远程仓库

6.1搭建远程仓库

6.2推送拉取代码命令

6.2.1推送

6.2.2克隆远端仓库

6.2.3抓取和拉取远端仓库

6.3解决冲突

1.简介

Git 是一款分布式版本控制系统,用于追踪文件(尤其是代码)的修改历史,方便多人协作开发和版本管理。它由 Linux 内核作者 Linus Torvalds 于 2005 年开发,目前已成为软件开发领域的行业标准。

啥叫分布式???
分布式就是没有”中央服务器“,每一台电脑上都是一个完整的版本库,这样工作的时候,就不需要联网,因为版本库就在自己的电脑上,多人协作只需要各自的修改推送给对方,就能互相看到对方的修改了(以前用的SVN就是联网的,你必须连服务器然后把代码下下来,然后工作修改之后提交,也就是依赖版本的操作都必须要联网,如果中央服务器挂掉了,或者磁盘坏了就全部没了)

2.前期工作

给自己的电脑下载合适的版本git

右键显示更多画面就有这个画面,Bash就是命令行,GUI就是图形化界面

3.配置git

1.打开Git Bash

2.设置用户信息

在命令行中输入

git config --global user.name "name"      

git config --global user,email "email"

3.查看配置信息

git config --global user.name

git config --global user.email

3.1配置命令

配置命令就是给一些较长的命令取一些别名,这样后续方便一点

在用户家目录下,创建.bashrc文件

要么命令行中touch ~/.bashrc 

要么直接在windows的用户家目录下右键创建

在.bashrc文件中输入

alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

alias ll='ls -al'

3.2解决乱码问题

有时候输入中文会有问题,这个想解决就解决

1.打开GitBash输入

git config --global core.quotepath false

2.打开刚刚的bashrc文件,在文件后面加两行

export LANG="zh_CN.UTF-8"

export LC_ALL="zh_CN.UTF-8"

4.本地仓库

4.1获取本地仓库

意思就是你要将哪个文件夹给git帮你进行版本管理,这个文件夹就是你的本地仓库

选择你要管理的文件夹,点击进去,然后右键打开git bash,这样就会默认在这个目录下

然后执行命令git init

可以看到我执行完之后的文件夹有个勾

打开之后里面自动生成.git

4.2操作流程图

简单来说除了.git之外都是你的工作目录

未跟踪就是你创建了文件但是你未跟踪,git就不会帮你进行管理不会做任何事情

只有跟踪了才告诉git帮我管理一下,此时就从未跟踪变成已暂存,暂存区就是一个缓冲区

未暂存是已经被 Git 跟踪的文件发生了修改,但这些修改还没有被添加到暂存区的状态。

综上,我们只要分清工作区,暂存区,和本地仓库就行

4.3基础操作命令

工作区到暂存区:git add .   注意这个.表示把所有的文件都提交到暂存区,但是这个如果没有进行修改就不会提交到暂存区

暂存区到本地仓库:git commit -m '注释内容'   git commit test -m '注释内容'(选择提交暂存区中的test文件)

查看修改的状态:git status

对于未跟踪且未在.gitignore中的文件,若想跟踪就git add,若想忽略就加到.gitignore文件中

对于已跟踪的文件(就是之前add过但是进行了修改)

对于暂存区的文件

查看提交日志:git-log (这个是我们之前配置过的命令)

由于我们配置过直接使用就行

4.4回退版本命令

版本切换:git reset --hard commitID

commitID可以使用git-log或git log命令查看

可以看到这里test01第一个版本id为f48699a,然后进行了修改之后add commit之后形成第二个版本,版本id为ace2bb6,所以你想要回退之前的版本就是用这个版本id

可以看到回退到了之前的版本

那现在是如果我又想回到原来呢?现在我git-log查不到之前最新的版本号该怎么办?

查看一句删除的记录:git reflog

4.5添加文件到忽略列表

对于未跟踪的文件我们想忽略掉,也就是往后提交的时候不需要git来管理

就可以把文件添加进.gitignore文件中

5.分支

分支就是每个人的开发路线不一样,先干好自己的,后面再把代码合在一起,这叫合并

5.1常见分支命令

查看本地分支:git branch

创建本地分支:git branch 分支名

切换分支:git checkout 分支名

合并分支:git merge 分支名

删除分支:git branch -d 分支名 

强制删除:git branch -D 分支名,

如果分支还没有合并你进行了删除,对于普通删除需要询问你一下,防止误删除,强制就不问

这个master就是一个分支,后面在创建了分支dev01

这个HEAD指向哪个就是现在处于哪个分支,现在处于master分支,然后这个master和dev01是处于同一级的

这样就是切换到dev01分支了

新建了一个目录,现在如果想要把其他分支合并到master上,需要切换到master然后使用merge命令

5.2解决冲突

对于分支中,拥有同一个文件,如果改动同一个文件的同一行,最后合并的时候用谁的???

也就是如果逻辑上的重叠或矛盾时就无法合并,此时需要人工处理

对于同一个文件test02,都进行了修改,此时进行合并

这里报冲突在test02

可以看到head就是当前分支master分支是hello,dev01分支是world,所以我们要选择删掉一个

删除到只剩hello,暴力删除就行,这样就可以合并了

然后去命令行git add . git commit 就可以了

直接wq保存退出就行

5.3实际开发的分支使用原则

6.git远程仓库

这里我们选择gitee来搭建我们的远程仓库

6.1搭建远程仓库

1.自行注册登录好gitee

2.点击+号新建仓库

3.输入仓库名,简单介绍一下该仓库是什么,开源和私有自己设置,下面三个不要选择

4.创建好之后,不是所有的仓库别人都能推送,需要认证,需要公私钥配对

5.配置SSH公私钥,输入指令ssh-keygen -t rsa然后不断回车,如果原来有了就会覆盖

这个rsa就是一个非对称密钥的算法

6.cat 查看公钥,复制

7.回去刚刚的gitee,个人设置-安全设置-ssh公钥

8.命令查看是否添加成功

9.用远程仓库的ssh地址,复制这个ssh地址,告诉你本地仓库对应的是哪个远程仓库

five_in_a_row就是从你本地仓库的视角给远程仓库起个名字

然后git remote可以查看你的本地仓库对应了哪些远程仓库

6.2推送拉取代码命令

6.2.1推送

-f就是强制覆盖,当你的本地和远程的代码冲突了,有时候不给推,那就强制覆盖,一般公司会禁掉,防止强制覆盖

然后这个:左边是你的本地分支名,右边是远端分支名

一般会使用--set-upstream关联本地分支和远端分支,这样后面git push推送代码的时候就不需要再写远程仓库,本地分支名,远程分支名

git branch -vv就可以查到你的本地仓库的哪个分支和哪个远端仓库的哪个分支相关联了,下一次你直接使用git push命令就可以推送你本地的代码到远端

6.2.2克隆远端仓库

仓库路径就是ssh地址,这个目录就是在你本地生成一个本地仓库

也就是你一开始干项目的时候,进公司,clone一下到你自己的pc端,clone不是很频繁,只要一次就行,这个本地仓库就自动初始化了,然后别人的提交你后续只要更新提交的就行,而不是每次都clone

6.2.3抓取和拉取远端仓库

6.3解决冲突


文章转载自:

http://b0Anr9fX.tbhtr.cn
http://iZOWlJbH.tbhtr.cn
http://pIx3FWr3.tbhtr.cn
http://dIaW4iPR.tbhtr.cn
http://UAUnKJDL.tbhtr.cn
http://UoyLHc5H.tbhtr.cn
http://QA65aENU.tbhtr.cn
http://sUVSZ2X1.tbhtr.cn
http://XABmNPUP.tbhtr.cn
http://0Qd5popX.tbhtr.cn
http://V9Lc6CBc.tbhtr.cn
http://jxyYY89t.tbhtr.cn
http://x4gyKK8x.tbhtr.cn
http://BJohuRxW.tbhtr.cn
http://K9H18PhY.tbhtr.cn
http://B1GPcXHf.tbhtr.cn
http://6BZwnuIv.tbhtr.cn
http://fgRMwyax.tbhtr.cn
http://QybBAJ7R.tbhtr.cn
http://1PLgYhiH.tbhtr.cn
http://4jeT8RjV.tbhtr.cn
http://NE6Lozus.tbhtr.cn
http://A3TE2Erj.tbhtr.cn
http://dYy5YJGF.tbhtr.cn
http://rGbQ4DnJ.tbhtr.cn
http://VC40HX90.tbhtr.cn
http://tTr7oqda.tbhtr.cn
http://H3TzRPfT.tbhtr.cn
http://qAFioqfo.tbhtr.cn
http://Bw8Hs1Nd.tbhtr.cn
http://www.dtcms.com/a/384707.html

相关文章:

  • 【CSS】一个自适应大小的父元素,如何让子元素的宽高比一直是2:1
  • 前端通过地址生成自定义二维码实战(带源码)
  • Android Doze低电耗休眠模式 与 WorkManager
  • 用 Go 重写 adbkit:原理、架构与实现实践
  • 通过Magisk service.d 脚本实现手机开机自动开启无线 ADB
  • NineData社区版 V4.5.0 正式发布!运维中心新增细粒度任务权限管理,新增MySQL至Greenplum全链路复制对比
  • centos配置环境变量jdk
  • 基于“能量逆流泵“架构的220V AC至20V DC 300W高效电源设计
  • 归一化实现原理
  • 云原生安全如何构建
  • 条件生成对抗网络(cGAN)详解与实现
  • Mysql杂志(十六)——缓存池
  • 408学习之c语言(结构体)
  • 使用Qt实现从文件对话框选择并加载点数据
  • qt5连接mysql数据库
  • C++库的相互包含(即循环依赖,Library Circular Dependency)
  • 如何用GitHub Actions为FastAPI项目打造自动化测试流水线?
  • LVS与Keepalived详解(二)LVS负载均衡实现实操
  • 闪电科创-无人机轨迹预测SCI/EI会议辅导
  • 自动驾驶中的传感器技术48——Radar(9)
  • HDLBits 解题更新
  • Python 自动化测试开发教程:Selenium 从入门到实战(1)
  • 树莓派4B实现网络电视详细指南
  • Docker:在Windows上安装和使用,加速容器应用开发
  • Android中怎么使用C动态库
  • Redis 安装实战:在 CentOS 中通过源码包安装
  • 抛砖引玉:神经网络的激活函数在生活中也有
  • Java生成与解析大疆无人机KMZ航线文件
  • Mysql 主从复制、读写分离
  • Linux网络设备驱动结构