git的使用

[复制链接]
发表于 2025-7-24 14:44:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目录


一、什么是git
二、git的使用方式
三、命令行的使用
(一)git config 设置用户名和邮箱
(二)新建版本库(堆栈)
三、git的工作地区和文件状态
四、添加和提交文件
五、git reset 回退版本
六、git diff 查看差异
七、使用git rm 删除文件
八、.gitignore 忽略文件




一、什么是git

Git是一个免费开源的分布式版本控制体系,它使用一个特别的叫做堆栈(repository)的数据库来记录文件的变化。
堆栈中的每个文件都有一个完整的版本汗青记录,可以看到谁在什么时间修改了哪些文件的哪些内容,在必要的时候也可以将文件恢复到之前的某一个版本。
如果没有版本控制体系,那么我们就只能通过最原始的方式来管理文件,比如将文件按照多个日期备份出多个副本,大概将整个项目的每个版本都保存在差别的文件夹中,而当许多项目成员同时在修改用一个项目的时候,就必要手工来合并两个人的修改内容,如许不但低效,管理起来也很贫苦,版本控制体系就是为了办理这些问题而诞生的。
有了版本控制体系,我们就可以跟踪每个文件的变化,让项目成员之间的协作更加高效,目前天下上最盛行的版本控制体系有两种,一种是集中式版本控制体系,比如SVN CVS 等等,另一种就是分布式版本控制体系,比如 Git Mercurial等等。
在集中式版本控制体系中,所有的文件都保存在中央服务器上,每个人的电脑上只保存一个副本,当你必要修改文件的时候,首先要从中央服务器上下载最新的版本,然后添加你想要修改内容,修改完成后再上传回中央服务器,集中式版本控制体系特点是使用起来比较简单,只必要从中央服务器上下载最新的版本,修改完成后再上传回中央服务器就可以了,不必要思量别的的问题,但是缺点也很显着,就是中央服务器的单点故障问题,如果中央服务器出现故障大概网络连接出现问题,那么所有人都无法工作,只能等待中央服务器大概网络恢复正常。
在分布式版本控制体系中,每个人的电脑上都有一个完整的版本库,所有我们可以在本地进行修改,不必要思量网络的问题,如许即使中央服务器出现故障,我们也可以继续工作,当必要将我们的修改内容分享给其他人的时候,只必要将堆栈相互同步一下就可以了
二、git的使用方式

git的使用方式主要有三种,分别是 命令行,图形化界面和IDE插件,
命令行是最根本最常用的方式,就是在终端中输入Git命令的方式来使用Git;
图形化界面也叫GUI,就是通过一些专用的图形化工具软件来使用Git;
IDE插件就是在常用的IDEA大概VSCode这些IDE工具中,通过插件大概扩展的方式来使用git
三、命令行的使用

Git的所有命令都以git开头,背面跟着详细的命令,比如 git init 就是初始化一个堆栈
(一)git config 设置用户名和邮箱

在使用git之前,第一步就是先使用 git config 命令设置一下用户名和邮箱,如许在提交的时候,才能够辨认出来是谁提交的内容
  1. git config --global user.name "caishucong"
复制代码
   省略(Local):本地设置,只对本地堆栈有效
  --global:全局设置,所有堆栈生效
  --sysytem:体系设置,对所有用户生效
  1. git config --global user.email [email protected]
  2.                           //中间没空格就可以省略双引号
复制代码

我们也可以使用下面这个命令来保存用户名和暗码
  1. git config --global credentail.helper store
复制代码
 我们也可以查看我们刚刚设置的用户名和邮箱
  1. git config --global --list
复制代码
设置完之后就可以使用git来管理我们的代码了

(二)新建版本库(堆栈)

版本库可以对本地的代码进行管理,版本库又叫堆栈(Repository),简称Repo
堆栈可以明白成一个目录,这个目录里面所有的文件都可以被git管理起来,每个文件的修改,增加,删除,git都能跟踪到,以便任何时候都可以追踪汗青大概还原到之前的某一个版本
创建一个堆栈很简单,只必要把一个目录变成 git 可以管理的堆栈就可以了
有两种方式创建堆栈,第一种是自己电脑本地直接创建一个堆栈 (git init) ,另一种就是从远程服务器克隆一个已经存在的堆栈(git clone)
来个示例吧
  1. mkdir learn-git     //创建一个目录
  2. cd learn-git
  3. git init            //创建仓库
复制代码
 git init  背面还可以指定目录的名称,如果指定了,就会在当前目录下面创建一个新的目录作为git堆栈
  1. git init my-xiaodan
复制代码
 这里my-xiaodan就是我们刚刚创建的堆栈

刚刚还提到了另一种方式也可以创建一个Git堆栈,就是使用 git clone 命令来从 GitHub 大概Gitee这种远程服务器上克隆一个已经存在的堆栈,直接来看一个示例
  1. git clone github.com
  2.         //默认后面是网址,按回车即可
复制代码

三、git的工作地区和文件状态

Git 的本地数据管理分为三个地区,分别是工作区(Working Directory)暂存区(Staging Area/Index)和本地堆栈(Local Repsitory)


  • 工作区(Working Directory):也叫工作目录大概本地工作目录,就是我们自己电脑上的目录,在资源管理器里面能够看到的文件夹就是工作区
  • 暂存区(Staging Area/Index):也叫索引,是一种临时存储地区,用于保存即将提交到Git堆栈的修改内容
  • 本地堆栈(Local Repsitory):就是我们上面通过git init 命令创建的谁人堆栈,它包含了完整的项目汗青和元数据,是Git 存储代码和版本信息的主要位置
简单来说,工作区就是我们实际操纵的目录,暂存区就是一个中心地区,用于临时存放即将提交的修改内容,本地堆栈就是Git 存储代码和版本信息的主要位置。
但你修改竣工作区的文件之后,必要将它们添加到暂存区,然后再将暂存区的修改提交到本地堆栈中,这个过程中我们可以使用Git提供的命令来查看,比较大概撤销修改内容,来包管版本控制的准确性和完整性

相应的 Git中的文件也存在几种状态,分别是未跟踪(Untrack),未修改(Unmodified),已修改(Modified),已暂存(Staged)


  • 未跟踪就是我们新创建的,还没有被Git管理起来的文件
  • 未修改就是我们已经被Git管理起来,但是文件的内容没有变化,还没有被修改过
  • 已修改就是我们已经修改的文件,但是还没有添加到暂存区里面
  • 已暂存就是我们已经修改完之后,并且已经添加到暂存地区内的文件
                


四、添加和提交文件

怎样将文件添加到堆栈里面,涉及下面四个命令
   git init             创建堆栈
  git status        查看堆栈的状态
  git add            添加到暂存区
  git  commit      提交
  

  • git status :这个命令的作用就是可以用来查看当前堆栈的状态,比如可以查单当前堆栈处在哪个分支,有哪些文件以及这些文件当前处于什么一个状态。
  • git add:这个命令的作用就是将文件添加到暂存区,等待后续的提交操纵
  • git commit:commit就是提交的意思,我们的文件只有被提交到堆栈中,才算真正的被保管起来,这个命令只会提交暂存区的文件,而不会提交工作区的其他文件
   git add        添加到暂存区
  可以使用通配符,比方:git add *.txt                //添加所有txt范例的文件
  也可以使用目录,比方:git add.                      //添加当前目录的所有文件
    git commit 这个命令在提交的时候必要使用 -m 参数来指定提交的信息,这个信息会被记录到堆栈中,如果不指定 -m 这个参数,那么git commit 命令会进入一个交互式的界面,默认使用vim来编辑提交信息
                                           (ps:其实就是提交的备注)
  
所有文件提交完后,可以使用 git log 来查看提交记录
也可以使用 git log -- oneline 来查看简便的提交记录,就只显示每次提交的ID和提交信息

五、git reset 回退版本

在日常开辟的时候,我们经常会必要撤销之前的一些修改内容,大概回退到之前的版本,这个时候git reset 就派上用场了
reset 命令有三种用法,也就是背面可以加上三种差别范例的参数,分别是soft,hard,mixed。


  • soft        参数表示回退到某一个版本,并且保留工作区和暂存区的所有修改内容
  • hard       参数表示回退到某一个版本,并且丢弃工作区和暂存区的所有修改内容
  • mixed      参数就是介于soft和hard两个参数之间,回退到某一个版本,并且只保留工作区修改的内容,mixed也是reset命令的默认参数
示例一下
  1. ls                            //查看工作区
  2. git ls-files                  //查看暂存区
  3. git reset --soft b270efb       //加入版本号即可回退
  4. 还可以使用git reflog 来查看操作的历史记录
复制代码
六、git diff 查看差异

它可以用来查看文件在工作区,暂存区以及版本库之间的差异,它还可以查看文件在两个特定版本之间的差异,大概文件在两个分支之间的差异
git diff 背面什么都不加的话,是默认比较工作区和暂存区之间的差异内容,它会显示发生更改的文件以及更改的详细信息
git diff 背面加HEAD的话,就会比较工作区和版本库(堆栈)的内容
  1. git diff HEAD
复制代码
还可以背面加 cached 比较暂存区和版本库(堆栈)内容
  1. git diff --cached
复制代码
还可以比较两个提交版本的差异,用法就是在背面加上两个提交版本的ID就可以了
  1. git diff 5af90b8 b270efb
复制代码
 如果每次都查看版本号比较贫苦,所以我们还可以比较当前版本和现在的版本
  1. git diff HEAD~ HEAD
  2. 或者
  3. git diff HEAD^ HEAD
  4. //HEAD~ 和 HEAD^ 都代表是上一个版本
  5. //HEAD  代表是最新提交版本
  6. 以此类推
  7. HEAD~2 就代表是之前提交的前两个版本
  8. 或者我们只查看某一个文件,比如file3
  9. git diff HEAD^ HEAD file3.txt
复制代码

七、使用git rm 删除文件

删除文件有两种常用的方式,第一种就是直接删除文件提交
  1. rm file1.txt
复制代码
这种方式只是在本地工作区删除了文件,而暂存区的文件还没删除
第二种就是 git rm 这个命令,删除文件,在本地和暂存区都被删除了
接着记得提交文件,否则删除的文件在版本库还是存在的,
   rm file;git add file                        先从工作区删除文件,然后再暂存删除内容
  git rm<file>                                 把文件从工作区和暂存区同时删除
  git rm --cached<file>                  把文件从暂存区删除,但保留在当前工作区
  git rm -r*                                     递归删除某个目录下的所有子目录和文件
                                                        删除后不要忘记提交         
  
八、.gitignore 忽略文件

这个文件的作用也就是可以让我们忽略掉一些不应该被参加到版本库中的文件,如许可以让我们的堆栈体积更小,更加干净,那哪些文件是不应该被纳入版本库里面的?


  • 第一个就是一些体系自动生成的文件,比如一些工具和一些软件产生的临时文件
  • 第二个就是编译生成的一些中心文件 可实行文件等等,也就是一个文件是通过另一个文件自动生成的,那自动生成的文件就没有必要放到版本库里面,比如Java生成的.class文件,C语言编译生成的.o文件
  • 第三个就是体系运行过程中自动生成的一些文件,比如日志日志文件,缓存文件大概临时文件等等,
  • 最后一个就是涉及身份,暗码,口令,密匙等敏感信息文件的一些设置文件
   忽略日志日志文件和文件夹
  忽略所有的    .class  / .o 文件
  忽略所有的 .env 文件
  忽略所有的  .zip 和 tar 文件
  忽略所有的 .pem 文件
  在 .gitigonre可以做出如许修改
   # 忽略所有的 .a 文件
  *.a
  
  # 但跟踪所有的 lib.a ,即便你在前面忽略了 .a 文件
  !lib.a
  
  # 只忽略当前目录下的 TODO 文件,而不忽略 sudbir/TODO
          (不忽略所有子目录的TODO文件)
  /TODO                    
          ( 在规则的最前面加上了斜线来表示根目录)
  
  # 忽略任何目录下名为 build 的文件夹
  build/
  
  # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
   (忽略doc文件夹下的所有的以txt结尾的文件,但不会忽略doc下面的子目录下面的txt文件)
  doc/*.txt
  
  # 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
          (忽略所有doc目录下以及它下面的所有子目录下的 .pdf 结尾的文件)
  doc/**/*.pdf
  
  



回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表