首页 > 其他分享 >Git相关知识

Git相关知识

时间:2024-04-02 20:12:11浏览次数:27  
标签:文件 Git 知识 命令 git 提交 相关 分支

一、偏理论性知识

1.什么是git?他的主要特点是什么?

  Git是一种分布式版本控制系统,用于追踪和管理文件的变化。

  ①它具有分布式的特点,使每个开发者都有完整的代码仓库副本,可以在本地进行工作,无需依赖中央服务器。

  ②并且Git通过对文件和内容进行快速哈西计算来实现高效的版本控制。

  ③强大的分布支持:Git以分支为核心创建、合并和管理分支,方便并行开发和特性隔离。

  ④完整性和安全性:Git使用SHA-1哈西来确保数据的完整性,并且提供认证和加密功能以确保安全性。

 

2.Git工作原理

  Git基于快照(snapshot)而非差异(diff)的方式来处理文件变化。

  它将文件和目录的快照保存在一个称为“仓库(repository)”的数据库中。

  当提交(commit)时,Git会创建一个指向该快照的指针,并将该指针添加到版本历史中。

  Git使用分支(branch)来指向不同的提交,从而支持并行开发和特性隔离。

 

3.Git 是用什么语言编写的?

  Git使用 C 语言编写。 GIT 很快,C 语言通过减少运行时的开销来做到这一点。

 

4.提交对象包含什么?(提交命令:git commit)

  Commit 对象包含以下组件,你应该提到以下这三点:

一组文件,表示给定时间点的项目状态

引用父提交对象

SHAI 名称,一个40个字符的字符串,提交对象的唯一标识。

 

5.Git的三种区域

对于任何一个文件,在 Git 内都只有三种区域:工作区,暂存区和本地仓库。

工作区:表示新增或者修改了某个文件,但是还没有提交保存;

暂存区:表示把已经新增或修改的文件,放在下次提交时要保存的清单中;

本地仓库:文件已经被安全地保存在本地仓库中了。

 

 

6.分支策略

 

  • 功能分支(Feature branching)

要素分支模型将特定要素的所有更改保留在分支内。当通过自动化测试对功能进行全面测试和验证时,该分支将合并到主服务器中。

 

 

  • 任务分支(Task branching)

在此模型中,每个任务都在其自己的分支上实现,任务键包含在分支名称中。很容易看出哪个代码实现了哪个任务,只需在分支名称中查找任务键。

 

 

  • 发布分支(Release branching)

一旦开发分支获得了足够的发布功能,你就可以克隆该分支来形成发布分支。创建该分支将会启动下一个发布周期,所以在此之后不能再添加任何新功能,只有错误修复,文档生成和其他面向发布的任务应该包含在此分支中。一旦准备好发布,该版本将合并到主服务器并标记版本号。此外,它还应该再将自发布以来已经取得的进展合并回开发分支。

 

 

二、git命令

1.在 Git 中提交的命令是什么?

  用于写入提交的命令是 git commit -a。加 -a 指示 git 提交已修改的所有被跟踪文件的新内容。

如果是第一次需要提交新文件,可以在在 git commit -a 之前先 git add <file>

 

2.git config 的功能是什么?

git 使用你的用户名将提交与身份相关联。 git config 命令可用来更改你的 git 配置,包括你的用户名。

例子:

假设你要提供用户名和电子邮件 ID 用来将提交与身份相关联,以便你可以知道是谁进行了特定提交。为此,我将使用:

git config –global user.name “Your Name”

此命令将添加用户名。

git config –global user.email “Your E-mail Address”

 此命令将添加电子邮件ID。

 

3.如何撤销已提交的代码更改?

  可以使用git revert命令,同时它保持版本历史的完整性。另一种方法是使用git reset命令,但是它会改变版本历史。

 

4.如何还原已经 push 并公开的提交?

  删除或修复新提交中的错误文件,并将其推送到远程存储库。这是修复错误的最自然方式。对文件进行必要的修改后,将其提交到我将使用的远程存储库

git commit -m "commit message"

  创建一个新的提交,撤消在错误提交中所做的所有更改。可以使用命令:

git revert <name of bad commit>

 

5.git pull 和 git fetch 有什么区别?

  git pull 命令从中央存储库中提取特定分支的新更改或提交,并更新本地存储库中的目标分支。

  git fetch 也用于相同的目的,但它的工作方式略有不同。当你执行 git fetch 时,它会从所需的分支中提取所有新提交,并将其存储在本地存储库中的新分支中。如果要在目标分支中反映这些更改,必须在 git fetch 之后执行git merge。只有在对目标分支和获取的分支进行合并后才会更新目标分支。方便起见,有以下等式:

git pull = git fetch + git merge

 

6.如何撤销暂存的文件?

  可以使用git restore命令来撤销暂存的文件。该命令将取消对文件的暂存,并还原文件到最后一次提交的状态。如果要完全丢弃对文件的更改,可以使用git restore --staged <file>命令。

 

7.如何解决合并冲突?

  合并冲突发生在合并分支时,当两个分支的同一部分产生了不同的更改时。解决合并冲突的一般步骤如下:

        • 使用git status命令查看冲突的文件。

        • 打开冲突文件,手动解决冲突并选择要保留的更改。

        • 使用git add命令将解决冲突后的文件标记为已解决。

        • 使用git commit命令提交解决冲突的结果。

 

8.如何查看提交日志?

  可以使用git log命令查看提交日志。该命令以时间倒序列出所有提交,并显示每个提交的作者、日期、提交消息和哈希值等信息。

 

9.如何创建和合并分支?

可以使用git branch命令创建新分支,例如git branch feature

创建分支后,可以使用git checkout命令切换到新分支,例如git checkout feature

要将分支合并到当前分支,可以使用git merge命令,例如git merge feature

 

10.如何查看文件的修改历史?

  可以使用git blame命令查看文件的修改历史。该命令会逐行显示文件的内容,并标记每行的修改作者和提交信息。

 

11.如何将本地仓库与远程仓库同步?

可以使用git fetch命令从远程仓库下载最新的提交和分支信息。

然后,使用git merge命令或git rebase命令将本地分支与远程分支合并。

最后,使用git push命令将本地提交推送到远程仓库。

 

12.如何在Git中标记重要的提交?

可以使用git tag命令来标记重要的提交。标签可以用于版本发布、里程碑标记等。

可以创建两种类型的标签:轻量标签(仅包含提交哈希)和带注释的标签(包含提交哈希、作者、日期和注释)。

例如,使用git tag v1.0创建一个轻量标签,使用git tag -a v1.0 -m "Version 1.0"创建一个带注释的标签。

 

13.如果分支是否已合并为master,你可以通过什么手段知道?

git branch –merged 它列出了已合并到当前分支的分支。

git branch –no-merged 它列出了尚未合并的分支。

标签:文件,Git,知识,命令,git,提交,相关,分支
From: https://www.cnblogs.com/wyy-25/p/18111169

相关文章

  • Git——版本回退
    关键指令回退到相应版本:指令:gitreset--hard版本号强制推送到远程仓库指令: gitpush-forigin分支名这里需要使用gitpush-f命令强制推送到远程仓库,因为普通的gitpush会因为版本冲突而报错看到这行就代表远程仓库成功回退了版本终端......
  • 全量知识系统 OO技术探讨 (Q&A-百度AI)
    Q1.我们前面刚刚讨论了全量知识系统程序详细设计之“AI操作系统”,但是感觉有问题。为了澄清,我觉得有必要先澄清几组概念。先从“scope、context,range”开始吧A1. 概念解析:Scope,+Context,+Range当然,很高兴你对这些概念有所思考,我们一起来澄清一下。1.**Scope(范围)**:  ......
  • 全量知识系统 程序详细设计之“ AI操作系统” (百度搜索的Q&A)
    Q1. 今天讨论的题目是:全量知识系统程序详细设计之“AI操作系统”..本篇是基于前面的文章给出的系统核心(一个恰当的组织)之上的一个扩展,并在此基础上给出整个全量知识系统(以下简称“全知系统”)程序详细设计大纲全量知识系统(全知系统)程序详细设计大纲一、引言在前期文章中,......
  • 全量知识系统 程序详细设计之“ AI操作系统”
    本篇是基于前面的文章给出的系统核心(一个恰当的组织)之上的一个扩展,并在此基础上给出整个全量知识系统(以下简称“全知系统”)程序详细设计大纲。原文链接:全量知识系统的核心:全量知识的一个恰当组织之序-CSDN博客。全知系统中的程序program采用自上而下的分类方式(组织分析结果......
  • 全量知识系统 详细设计 之preserving{Truth,Structure,Lexicon}
    全量知识系统详细设计之preserving{Truth,Structure,Lexicon}1、三种对象三种库python数据对象none对象: 对等立方体(PQR) ole对象Y。pqr均为立体库(工厂级的)Java 类对象Empty对象:公差立方体(XYZ)  值对象C。   xyz均为线库(车间级生产线的线边库)c#实体对象 ......
  • Git常用命令大全:让你轻松驾驭版本控制
    前言Git是一款强大的分布式版本控制系统,广泛应用于软件开发中。无论是个人开发者还是团队协作,掌握Git的常用命令是至关重要的。本文将介绍Git的常用命令,帮助您更好地管理代码版本。初始化一个新的仓库gitinit这个命令将在当前目录下创建一个新的Git仓库。克隆一个仓库......
  • 自然语言处理基础知识入门(二) Word2vec模型,层次softmax,负采样算法详解
    文章目录前言一、Word2vec模型1.1什么是Word2vec模型?1.2Word2vec模型是如何训练?1.3Word2vec最简单版本整体过程1.4Word2vec详细过程1.5CBOW整体过程1.6Skip-gram整体过程二、优化算法2.1层次softmax2.1.1哈夫曼树2.1.2算法详细逻辑2.2负采样策略总结......
  • 使用git(ee的一个小总结
    我先把后端项目推进了gitee,后面为了方便又想把前端也放在同一个项目里,结果出问题了:一开始是因为前端项目内包含了.git的文件(这个玩意还是隐藏文件,就是你在idea里其实是看不到他的),导致只能推进去一个点不开的文件夹。经历过看不懂英文上头乱点把项目删干净的经历,我提......
  • 基础知识-K8s(docker jenkins git)部分
    (0402,更新到Git)资料来源roadmap.sh一小时学会Git|GeekHourDocker部分Docker(容器)到底是什么我的例子预制菜的做法。为了能让使用者都能同一种食材和同一种烹饪方法,我特意在中央厨房,将一种菜式里的食材处理到半熟或者全熟的状态,然后用真空的包装包好,之后在仓库里存放。使......
  • linux 安装git服务
    一、安装git服务在Linux上安装git目前主要有两种方式,一种是直接用yum命令进行安装,这种安装方便简单,但是版本无法控制,就是yum源码中的版本可能比较旧。另一种事自己下载源码进行安装。第一种方式比较简单:通过yum命令安装git:yuminstallgit-y查看是否安装成功:rpm-qa......