首页 > 其他分享 >Git入门到精通

Git入门到精通

时间:2024-07-17 12:29:16浏览次数:17  
标签:文件 精通 git 入门 仓库 暂存区 Git 提交

一.Git基础知识点

Git 是一种分布式版本控制系统,用于跟踪文件和代码的变化,并协调多个开发人员之间的工作。下面是 Git 的几个基本概念和使用方式:

  1. 代码仓库(Repository):Git 将代码保存在一个名为仓库的结构中。一个仓库可以包含多个文件和文件夹,用于存储项目的代码和文件。

  2. 分支(Branch):Git 允许在仓库中创建多个分支,每个分支都是独立的代码版本。开发人员可以在自己的分支上进行工作,并在需要时将更改合并到主分支(通常是master分支)上。

  3. 提交(Commit):提交是指对仓库的更改的保存。每个提交都有一个唯一的标识符,开发人员可以添加提交信息来描述所做的更改。

  4. 拉取(Pull)和推送(Push):拉取是指从远程仓库获取最新的更改,推送是指将本地仓库的更改推送到远程仓库。

  5. 合并(Merge):合并是将一个分支的更改合并到另一个分支的过程。当开发人员完成一个功能或修复一个 bug 时,通常会将其合并到主分支上。

  6. 克隆(Clone):克隆是指从远程仓库复制整个仓库到本地。使用克隆可以获取远程仓库的代码,并创建一个本地副本进行开发工作。

使用 Git 的方式包括以下几个步骤:

  1. 初始化仓库:通过命令 git init 在本地文件夹中创建一个新的 Git 仓库。

  2. 添加和提交更改:使用命令 git add 将要提交的文件添加到暂存区,然后使用 git commit 提交更改到仓库中。

  3. 创建和切换分支:使用命令 git branchgit checkout 可以创建新的分支并切换到该分支。

  4. 拉取和推送更改:使用命令 git pull 从远程仓库获取最新的更改,使用 git push 将本地仓库的更改推送到远程仓库。

  5. 合并分支:使用命令 git merge 将一个分支的更改合并到另一个分支。

  6. 克隆仓库:使用命令 git clone 克隆一个远程仓库到本地。

这些是 Git 的基本概念和使用方式,通过掌握这些知识,开发人员可以更好地协作和管理代码。

二.Git结构介绍

Git的基本结构主要包括四个部分:工作区(Working Directory)、暂存区(Staging Area)、本地仓库(Repository,也称为版本库)和远程仓库(Remote Repository) 

1. 工作区(Working Directory)

  • 工作区是用户平时编写代码的地方,包含了所有的项目文件。
  • 用户在工作区中对文件进行修改、新增或删除等操作。

2. 暂存区(Staging Area)

  • 暂存区是一个中间区域,用于暂存即将提交到本地仓库的文件。
  • 用户通过git add命令将工作区的修改或新增文件添加到暂存区。

3. 本地仓库(Repository,也称为版本库)

  • 本地仓库是Git用来保存历史修改记录的地方,包含了所有的项目文件及其变化的历史记录。
  • 本地仓库主要分为两个部分:索引(Index)和对象库(Object Database)。
  • 索引(Index):记录暂存区的内容,是分层的,用于构建提交到版本库的快照。
  • 对象库(Object Database):存储所有的文件和变化的历史记录,包括blob(文件内容)、tree(目录结构)、commit(提交记录)和tag(标签)四种类型的对象

4. 远程仓库(Remote Repository)

  • 远程仓库是一个服务器,用于存储用户的各种项目。常见的远程仓库平台有GitHub、GitLab、Gitee等。
  • 用户通过git push命令将本地仓库的修改推送到远程仓库,或通过git pull命令从远程仓库拉取最新的修改。

 三.Git和代码托管中心

1.团队内部协作流程

2.跨团队协作

 

四.Git命令行使用

1. 创建本地Git仓库

mkdir  cs   #创建目录

cd   cs      #进入cs

ll  -a         #查看隐藏的.git的文件

git  init     #初始化git仓库

ll  .git/      #查看.git下的文件列表

cat  .git/config    #查看.git/config文件内容

注意:.git目录是存放本地库相关的目录和文件,不要对其进行修改和操作

2.设置签名

2.1 签名介绍

  • 定义:Git签名本质上是一个用户名和电子邮件地址的组合,用于在Git提交中唯一标识一个用户。
  • 作用
    1. 区分身份:Git签名的主要作用是区分不同开发人员的身份,使得在查看Git提交历史时,能够清楚地知道每次提交是由谁完成的。
    2. 责任追踪:在代码审查或项目维护过程中,如果出现问题,可以通过Git签名快速定位到提交该代码的开发人员,从而进行责任追踪。
    3. 增强安全性:虽然Git签名本身并不直接提供安全性(如加密或验证提交者的身份),但它为后续的安全措施(如GPG签名)提供了基础,有助于增强Git仓库的安全性。
  • 配置文件:Git签名的配置信息会保存在不同的配置文件中,包括仓库级别的.git/config文件、用户级别的~/.gitconfig文件(或系统级别的全局配置文件,具体取决于操作系统和Git的安装方式)。
  • 优先级:如果同时设置了多个级别的签名(如仓库级别和全局级别),Git会按照就近原则选择使用。具体来说,仓库级别的签名优先级高于全局级别的签名。

 2.2 设置签名命令

项目级别(仓库):仅在当前本地库范围有效

git config user.name "zysheep"                          #设置用户名

git config user.email "[email protected]"         #设置邮箱

cat .git/config                                                      #查看git配置,是否有刚才设置的用户和邮箱

系统级别:登录当前操作系统的用户范围

git config --global user.name "zysheep"                     #设置用户名
git config --global user.email "[email protected]"    #设置邮箱

cd ~                                                                            #进入家目录

ls -a | grep "\.gitconfig"                                               #查看是否有.gitconfig的文件

cat .gitconfig                                                               #查看文件内容

在实际开发过程中,通常只需要设置系统级别即可。如果有特殊需要,再设置项目级别。

3.常用命令

3.1 初始化仓库

  • git init:在当前目录下创建一个新的Git仓库,并生成.git目录。

3.2 添加文件到暂存区 

  • git add <文件名>:将指定文件添加到暂存区(stage/index),准备提交。
  • git add .:添加当前目录下所有修改过的文件到暂存区。

3.3 提交更改 

  • git commit -m "提交信息":将暂存区的更改提交到仓库中,并附上提交信息。
  • git commit -am "提交信息":将当前目录下的所有更改添加到暂存区并提交,附上提交信息。

3.4 查看状态 

  • git status:查看当前仓库的状态,包括哪些文件已被修改、哪些文件已添加到暂存区等。

3.5 分支管理 

  • git branch <分支名>:创建新分支,但不切换。
  • git checkout -b <分支名>:创建新分支并切换到该分支。
  • git switch <分支名>:切换到指定分支,与git checkout的分支切换功能相同,但更直观。
  • git merge <分支名>:将指定分支的更改合并到当前分支。
  • git branch -d <分支名>:删除已合并的分支。
  • git branch -D <分支名>:强制删除分支,无论是否已分支。

3.6 查看提交历史 

  • git log:查看提交历史记录。
  • git log --pretty=oneline:以一行的方式显示提交历史记录
  • git log --graph:以图形方式显示分支和合并历史。

3.7 远程仓库操作 

  • git clone <仓库地址>:克隆远程仓库到本地。
  • git remote add <远程仓库名> <仓库地址>:添加远程仓库。
  • git fetch <远程仓库名>:从远程仓库获取最新版本,但不自动合并。
  • git pull <远程仓库名> <分支名>:从远程仓库获取最新版本并自动合并到当前分支。
  • git push <远程仓库名> <仓库名>:将本地分支的更改推送到远程仓库

3.8 撤销操作

  • git checkout --<文件名>:撤销工作区的修改,使其与暂存区或HEAD相同。
  • git reset HEAD <文件名>:将暂存区的文件撤销到工作区,但不改变工作区的文件内容。
  • git reset --hard <commit_id>:将当前分支的HEAD指针和暂存区、工作区都回退到指定提交

3.9 其他常用命令 

  • git diff:查看工作区与暂存区、暂存区与HEAD之间的差异。
  • git show <commit_id>:查看指定提交的详细信息。
  • git stash:将当前工作区的更改保存到栈中,以便稍后恢复。
  • git cherry-pick <commit_id>:将制定提交的更改应用到当前分支。

4. 分支文件永久删除后找回

4.1 执行 git reflog 来查找删除操作前的提交哈希值。

git reflog

执行这个命令后,Git 会列出 HEAD 和分支引用的历史记录,包括最近的提交、合并、重置(reset)、检出(checkout)等操作。这个列表会按照时间顺序显示,最新的操作在列表的顶部。 

4.2  当找到正确的提交哈希值时,你可以使用 git checkout 来恢复文件。例如,如果删除文件的提交哈希值是 abcdef,并且你想要恢复的文件是 example.txt

git checkout abcdef -- example.txt 

5. 文件比较

5.1 使用git diff命令

git diff命令是Git中最常用的文件比较命令之一。它可以比较工作目录中的文件与暂存区(staging area)、暂存区与仓库中最新提交(HEAD)、两个不同提交之间、或者两个不同文件之间的差异。

  • 比较工作区与暂存区之间的差异git diff(不指定文件名则比较所有文件)
  • 比较暂存区与最新提交之间的差异git diff --cached 或 git diff --staged
  • 比较两个不同提交之间的差异git diff <commit1> <commit2>
  • 比较两个文件之间的差异git diff <file1> <file2>

通过git diff命令,用户可以看到文件之间的差异,包括哪些行被添加、删除或修改,并且这些差异会以特殊的符号(如+表示新增行,-表示删除行)标记出来。

 5.2 使用git difftool命令

如果用户更喜欢使用图形化界面来比较文件差异,可以使用git difftool命令。这个命令会打开一个外部的比较工具(如Beyond Compare、KDiff3、vimdiff等),并显示两个文件之间的差异。

  • 配置git difftool:首先,用户需要配置一个外部的比较工具。这可以通过git config命令来完成,例如git config --global diff.tool vimdiff
  • 使用git difftool:配置完成后,用户可以使用git difftool <file>git difftool <commit1> <commit2> -- <file>等命令来比较文件差异。

 5.3 使用git show命令

虽然git show命令主要用于显示提交的详细信息,但它也可以用来比较文件在特定提交中的差异。通过指定提交和文件路径,用户可以查看该提交中文件的更改。

  • 示例git show <commit>:<file>

5.4 使用图形化Git客户端 

除了命令行工具外,还有许多图形化的Git客户端(如SourceTree、GitKraken等)提供了文件比较的功能。这些工具通常具有更友好的用户界面和更多的功能,可以方便地比较、合并文件的差异。

5.5 小结

Git的文件比较功能通过git diffgit difftool等命令以及图形化Git客户端提供了多种灵活的方式来比较文件差异。用户可以根据自己的需求选择最适合的方法来查看和理解文件的差异。这些工具在版本控制、代码审查和调试过程中发挥着重要的作用。

五.总结 

在软件开发和版本控制领域,Git无疑是最受欢迎的工具之一。掌握Git不仅能够提高开发效率,还能促进团队协作。从初学者到精通者,对Git常用命令的掌握是一个循序渐进的过程。以上是对Git常用命令学习的总结。

标签:文件,精通,git,入门,仓库,暂存区,Git,提交
From: https://blog.csdn.net/L08130421/article/details/140473059

相关文章

  • 【python零基础入门到就业】011、一文读懂python中的标识符(超详细)
    文章目录Python中的标识符(超详细)1.什么是标识符?示例:标识符示意图2.标识符的命名规则2.1基本规则示例:非法示例:2.2常见Python关键字标识符命名规则示意图3.标识符的命名规范3.1变量命名示例:3.2函数命名示例:3.3类命名示例:命名规范示意图4.常见的命名错误4.1混......
  • git下载与安装
    1.进入git官网,地址:https://git-scm.com/,进入下载页面,点击下载2.双击运行,安装路径不选择C盘,插件默认,一路默认下一步,安装,详细每一步讲解可参考:https://blog.csdn.net/qq_45281589/article/details/1346504563. 安装后有如下功能 GitBash是一个命令行工具,通过GitBa......
  • 从零开始,轻松掌握Git版本控制
    1.创建Git仓库在项目开始前或者项目进行中都可以进行Git仓库的创建,首先进入项目的根目录,然后运行gitinit2.把文件添加到版本库gitaddreadme.mdgitaddsrc/gitadd只是把文件添加到暂存区(stage)gitcommit-m"addreadmeandsrc/"gitcommit命令是把暂存区的文件提......
  • 【渗透入门】伪协议
    文章目录1.`file://`-访问本地文件系统2.`http://`和`https://`-访问HTTP(s)网址3.`ftp://`-访问FTP(s)URLs4.`php://`-访问各个输入/输出流5.`zlib://`-压缩流6.`data://`-数据(RFC2397)7.`glob://`-查找匹配的文件路径模式8.`phar://`-PHP归......
  • spring boot的基础入门
    1.什么是springbootspringboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。spring项目搭建的缺点:[1]配置麻烦[2]依赖[3]tomcat启动慢2.springboot的特点1)自动配置SpringBoot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过......
  • 【CTF入门】BUUCTF Misc刷题(持续更新)
    【CTF入门】BUUCTFMisc刷题签到点开发现签到题直接把flag交出来了,直接复制提交即可考点:了解CTF中flag的格式一般为flag{}金三胖下载文件,发现里面是一张gif图片,我们查看一下发现总有东西一闪而过这里我们介绍第一个在Misc图像隐写中非常常用的工具——StegSolveStegSolve......
  • 《深入探索 Linux 系统:从入门到精通的全面指南》
    更多内容,可前往官方网站进行浏览LinuxKernelDocumentation:        这是Linux内核的官方文档网站,包含了详细的内核开发和使用指南。非常适合需要深入了解Linux内核架构和功能的用户。CentOSOfficialDocumentation:这是CentOS的官方文档网站,提供了关......
  • [Linux+git+Gitee+Jenkins]持续集成实验安装配置详细
    首先理解持续集成原理,看懂并理解图1。图1持续集成原理结构图1中,版本控制服务器指远程代码仓库,本实验使用GitEE作为远程代码仓库;Jenkins自动化部署服务器为虚拟机,操作系统为Linux;服务器1…n为应用服务器,可使用自己物理机作为应用服务器。详......
  • kettle从入门到精通 第七十六课 ETL之kettle kettle连接hive教程
     1、群里有小伙伴询问kettle连接hive的demo,今天抽点时间整理下。其实kettle连接hive和连接mysql数据库也是一样的。1)kettle中的lib目录下放hive驱动jar,这里我使用的是kyuubi-hive-jdbc-shaded-1.9.0.jar。2)设置hive连接参数。3)通过表输入进行读取数据。 2、下载kyuubi-hive......
  • 零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码
    文章目录一.概要二.DHT11主要性能参数三.DHT11温度传感器内部框图四.DTH11模块原理图五.DHT11模块跟单片机板子接线和通讯时序1.单片机跟DHT11模块连接示意图2.单片机跟DHT11模块通讯流程与时序六.STM32单片机DHT11温度传感器实验七.CubeMX工程源代码下载八.小结一.......