《三》Git 中的本地仓库

这篇具有很好参考价值的文章主要介绍了《三》Git 中的本地仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

初始化本地 Git 仓库:

通过 git init 初始化,可以把当前目录变成 Git 可以管理的本地仓库。目前仅仅是做了一个初始化 Git 仓库的操作,项目里的文件还没有交由 Git 仓库来管理。

git init 初始化后会在当前目录下会出现一个名为 .git 的目录,这个就是 Git 仓库的核心。
如果没有看到 .git 目录,那是因为这个目录默认是隐藏的,用 ls -ah 命令就可以看见。

《三》Git 中的本地仓库

Git 中的区域:

《三》Git 中的本地仓库

  1. 工作区:就是在电脑里能看到的项目目录。用来写代码。
  2. 版本库:.git 不算工作区,而是 Git 的版本库。用来实实在在存储代码及其历史版本。
  3. 暂存区(索引区):.git 目录下的 Index 文件。用来临时存储代码。

Git 中文件的状态:

可以将文件划分成不同的状态,来确定该文件是否已经添加到 Git 仓库管理中。

  1. 未跟踪 Untrack:默认情况下,Git 仓库下的文件是没有被添加到 Git 仓库管理中的,Git 无法对其进行跟踪管理。需要通过 add 命令将文件由未跟踪变为已跟踪。
  2. 已跟踪:添加到 Git 仓库管理中的文件处于已跟踪的状态,Git 可以对其进行各种跟踪管理。
    已跟踪的文件状态又可以细分为:
    • Staged:通过 add 命令将文件添加到暂存区后,将会处于 Staged 状态。
    • Modified:修改了已跟踪的文件后,将会处于 Modified 状态。
    • Unmodified:将暂存区中的文件,通过 commit 命令提交到 Git 仓库后,将会处于 Unmodified 状态。

本地仓库的操作命令:

创建本地仓库:

  1. 创建一个空文件夹。
  2. 通过 git init 命令把这个目录变成 Git 可以管理的本地仓库。

添加文件到本地仓库:

  1. 在当前目录下新建一个文档。

  2. 使用 git add xxx.xx 命令,把工作区的文件添加到暂存区,将文件状态由未跟踪变为已跟踪。

    查看 .git/index文件 和 .git/objects 下的文件可以发现都有了一条记录。这说明:git add 是先将工作区的修改做成 git 对象放到版本库,然后再从版本库中拿出来放到暂存区中。
    《三》Git 中的本地仓库

    在版本库中只能跟踪和管理文本文件,比如 txt 文件、js 文件、php 文件、java 文件等,所有的程序代码都可以的。但是像视频、图片等这些二进制文件,虽然能由 git 管理,但是只能记录大小,无法跟踪具体修改了什么。

    git add . 将所有文件添加到暂存区。
    可反复多次使用 git add 添加多个文件,通过git commit 一次提交。

  3. 使用 git commit -m "xxxxx" 命令,将暂存区的文件提交到本地仓库中。

    -m 后面的是本次提交的说明信息。
    使用 git commit -a -m "xxxxx" 可以将 get addgit commit 两个命令简化成一个命令。

    《三》Git 中的本地仓库
    在每次提交中,Git 都会通过 SHA-1 散列算法生成校验和。校验和是一个由 40 位十六进制组成的字符串,基于 Git 中的文件内容和目录结构计算出来。校验和可以作为提交的唯一 id 用来标识本次提交;也可以通过校验和索引出来本次提交的所有文件。

查看状态:

git status 用来查看工作区和暂存区的状态。

  1. git init 初始化之后,git status 查看一下状态,终端显示如下信息:
    On branch master // 当前为 master 分支
    
    No commits yet // 本地仓库还没有任何提交
    
    nothing to commit (create/copy files and use "git add" to track) // 暂存区没有什么可提交的
    
  2. 新建 index.txt 文件,然后 git status 查看一下状态,终端显示如下信息:
    On branch master  // 当前为 master 分支
    
    No commits yet // 本地仓库还没有任何提交
    
    Untracked files: // 工作区中还没有被跟踪的文件,也就是还没有被 add 的文件,add 之后将会进入暂存区
      (use "git add <file>..." to include in what will be committed)
            index.txt
    
    nothing added to commit but untracked files present (use "git add" to track) // 暂存区没有任何提交,但是工作区存在没有被跟踪的文件
    
  3. git add index.txtindex.txt add 到暂存区,然后 git status 查看一下状态,终端显示如下信息:
    On branch master  // 当前为 master 分支
    
    No commits yet // 本地仓库还没有任何提交
    
    Changes to be committed: // 暂存区将要被提交的修改,也就是已经从工作区 add 到暂存区中的文件,commit 之后将进入本地仓库
      (use "git rm --cached <file>..." to unstage)  // 使用 ”git rm --cached <file>“ 将从暂存区删除并取消跟踪文件,恢复到 add 之前的状态
            new file:   index.txt
    
  4. git commit -m 'commt index.txt'index.txt 提交到本地仓库,然后 git status 查看一下状态,终端显示如下信息:
    On branch master // 当前为 master 分支
    nothing to commit, working tree clean  // 暂存区没有什么可提交的,工作区的树也是干净的
    
  5. 修改 index.txt 文件的内容,然后 git status 查看一下状态,终端显示如下信息:
    On branch master // 当前为 master 分支
    Changes not staged for commit: // 工作区有还没暂存的修改
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory) // 可以使用  "git restore <file>..." 丢弃在工作区的修改
            modified:   index.txt
    
    no changes added to commit (use "git add" and/or "git commit -a") // 暂存区没有被添加的修改,也就是这个文件在工作区、暂存区都存在,在工作区进行了一些新的修改,但是这部分修改还没 add 到暂存区
    

版本的前进与回退:

git reset 用来进行当前分支上的版本的前进与回退。

git log 查看的是当前分支的 commit 提交记录。
gti reset 回退的也是当前分支的 commit 提交。

  1. 在上面 git status 查看状态的操作的基础上,将 index.txt 修改的内容也提交到本地仓库。
  2. 执行 git log 查看当前分支 commit 提交的历史记录, 终端显示如下信息:

    git log 不会对版本回退做记录,git reflog 会对所有版本记录做记录。

    commit 7d32b404e1c71fd4ed66a4e22d70b265bee9d307 (HEAD -> master) // 7d32b404e1c71fd4ed66a4e22d70b265bee9d307 哈希值为当次提交的 commit id 校验和
    Author: test <test@163.com>
    Date:   Thu Sep 30 16:22:22 2021 +0800
    
        second commit:index.txt
    
    commit bbeac607be274343dc74099887b9cee40e50d3a3
    Author: test <test@163.com>
    Date:   Thu Sep 30 11:13:15 2021 +0800
    BAN
        first commit:index.txt
    
    
    // 或者使用 git log --pretty=oneline,来让每一条日志只显示一行,更加简洁
    7d32b404e1c71fd4ed66a4e22d70b265bee9d307 (HEAD -> master) second commit:idex.txt
    bbeac607be274343dc74099887b9cee40e50d3a3 first commit:index.txt
    
    // 或者使用 git log --oneline,不仅可以让每一条日志只显示一行,而且缩短了哈希值,更加简洁
    7d32b40 (HEAD -> master) second commit:idex.txt
    bbeac60 first commit:index.txt
    
    // 或者使用 git reflog
    7d32b40 (HEAD -> master) HEAD@{0}: commit: second commit:idex.txt
    bbeac60 HEAD@{1}: commit (initial): first commit:index.txt  //  HEAD@{1} 表示移动到当前版本需要1步
    
  3. Git 通过 HEAD 指针记录当前版本。HEAD 是当前分支引用的指针,总是指向当前分支上的最后一次提交。版本的前进或后退就是在移动 HEAD。
    // 1. 使用 commit id 校验和去操作(推荐):git reset --hard bbeac60
    HEAD is now at bbeac60 first commit:index.txt
    // 此时,再 git reflog 查看一下历史记录:
    bbeac60 (HEAD -> master) HEAD@{0}: reset: moving to bbeac60
    7d32b40 HEAD@{1}: commit: second commit:idex.txt
    bbeac60 (HEAD -> master) HEAD@{2}: commit (initial): first commit:index.txt
    
    // 2. 使用 ^ 符号去操作:git reset --hard HEAD^(需要后退几步就写几个 ^ 符号。只能后退不能前进)
    // 3. 使用 ~ 符号去操作:git reset --hard HEAD~1(需要后退几步就写几。只能后退不能前进)
    

比较文件:

git diff 【文件名】:比较的是此文件工作区和暂存区的区别。不带文件名比较的是所有文件。
git diff 【本地仓库中的某个历史版本】 【文件名】:比较的是此文件工作区与本地仓库中某个历史版本的区别。不带文件名比较的是所有文件。

  1. 新建 add.txt 文件并输入一些内容,执行 git add add.txt
  2. 修改 add.txt 文件的内容,然后执行 git diff index.txt, 终端显示如下信息:

    Git 是以行为单位来管理文件的。

    diff --git a/add.txt b/add.txt
    index a8500fc..b544c22 100644
    --- a/add.txt
    +++ b/add.txt
    @@ -1,3 +1,3 @@
     qqq
    -www // 减号代表删除的行
    +wwwwww // 加号代表增加的行
     eee
    

本地储藏:

git stash:会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前的工作目录。

想删掉文件又担心以后需要查看它的代码,想保存它但又不想增加一个脏的提交,这时就可以考虑 git stash文章来源地址https://www.toymoban.com/news/detail-461295.html

  1. 实际应用中推荐给每个 stash 加一个 message,用于记录版本,使用 git stash save "xxx" 取代 git stash 命令。
  2. 可以通过 git stash pop 命令恢复之前储藏的工作目录。

到了这里,关于《三》Git 中的本地仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git初始化连接Gitlab远程仓库

    ​ 新环境下git配置,除了初始化和name、email设置,还需在远程仓库Gitlab中配置个人ssh key,才能clone远程仓库代码到本地,完成关联。 此时,.ssh目录下会有一个公钥(id_rsa.pub)一个私钥(id_rsa),将公钥的内容放到GitHub/GitLab等用户设置的SSH keys中即可。 之后本地就关联了远程仓库

    2024年02月11日
    浏览(60)
  • Git第二讲 使用Git命令创建和初始化仓库

    在使用Git之前,您需要创建并初始化一个Git仓库。这个仓库将用于存储您的项目文件并跟踪其版本。 首先,让我们创建一个全新的Git仓库。请按照以下步骤进行操作: 打开命令行终端或Git Bash,并导航到您想要存储项目的目录。 运行以下命令来初始化一个新的Git仓库: 这将

    2024年02月11日
    浏览(40)
  • Git第一次初始化项目到远程仓库

    git init 命令用于初始化Git 仓库。git init之后会提示“Initialized empty Git repository in 某个目录”,此时就会在相应的目录下创建一个“.git”文件夹。这个文件夹里的文件就是git的实现。没有git init之前,git status会提示“not a git repository” git@gitee.com:flytalei/JavaEE-Basic.git 当本地新项

    2024年02月04日
    浏览(73)
  • gitee上创建新仓库如何clone到本地,并初始化项目

    目录 一、克隆 方法一 方法二 二、初始化项目 构建基本框架 自动生成代码  由于github速度较慢,这里我们使用gitee。我们在gitee上面创建一个仓库,然后我们可以通过ideal直接克隆下来,仓库设置如下 接着使用ideal将项目克隆下来,首先复制项目的地址 打开ideal,选择文件

    2024年02月05日
    浏览(62)
  • 武林新秀(一)`git init` 初始化一个新的Git仓库

    git init 是 Git 版本控制系统中用于初始化一个新的 Git 仓库或重新初始化一个现有的仓库的命令。“init” 是 “initialize”(初始化)的缩写。执行此命令后,会创建一个名为 .git 的子目录,其中包含所有的仓库元数据,这使得目录成为一个 Git 仓库。 基本语法: --bare : 创建一

    2024年02月10日
    浏览(58)
  • 商品首页(sass+git本地初始化)

    目录 安装sass/sass-loader 首页(vue-setup) 使用git本地提交 同步远程git库 安装sass/sass-loader 首页(vue-setup) 使用git本地提交 同步远程git库 https://gitee.com/cloud2023_1/shop-wx.git

    2024年02月13日
    浏览(53)
  • 【Git】解决‘每次初始化一个新仓库时,都需要执行git config --global --add safe.directory命令‘

    这个命令是用来将一个安全目录添加到全局的 Git 配置中。但每次克隆一个仓库或者新建一个仓库,并且对该仓库进行操作时,都需要执行该命令,十分麻烦! 这是因为,Git 近期进行了版本升级,添加了新的目录安全限制。造成在进行git常规操作时无法发现.git文件。 方案一

    2024年04月08日
    浏览(55)
  • 【运维知识高级篇】一篇文章带你搞懂Git!(Git安装+全局配置+Git初始化代码仓库+Git四大区域+Git四种状态+Git常用命令+Git分支+Git测试代码回滚)

    版本流程控制系统(version control system)是一种记录一个或若干个文件内容变化,以便将来查阅特定版本内容情况的系统,它会记录文件的所有历史变化,我们可以随时恢复到任何一个历史状态,同时支持多人协作开发。 目录 常见的版本管理工具 Git安装与全局配置 Git初始化

    2024年02月02日
    浏览(63)
  • Git初始化

    方法: 修改全局文件(用户主目录下.gitconfig) 修改系统文件(如/etc/gitconfig) 用户姓名和邮件地址 修改用户名和邮件地址 清空用户姓名和邮件地址 查看用户名和邮件地址 git config -e 对应于 版本库级别的配置文件(workplace/demo/.git/config) git config -e --global 对应于 全局配置文

    2024年02月14日
    浏览(46)
  • git初始化项目上传

    步骤1:创建远程仓库 平台上建好项目,并copy远程仓库的URL 步骤2:初始化本地Git 首先,进入您本地的项目根目录下,然后,打开命令行界面,导航到该目录并执行以下命令: 执行完之后我们可以看到根目录下会多出一个.git文件。 如果是java项目可以在这个项目根目录下加个

    2024年02月10日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包