05_Git命令详解 - CRUD

article/2025/4/7 22:43:26

 教程目录

01_版本控制概述

02_Git概述

03_Git下载和安装

04_Git底层原理解析

05_Git命令详解 - CRUD

06_Git命令详解 - 分支

07_Git命令详解 - 后悔药

08_Git远程仓库

Git高层命令 - CRUD

初始化仓库

# 命令
git init

        解析:要对现有的某个项目开始用 Git管理,只需到此项目所在的目录,执行:git init

        作用:初始化后,在当前目录下会出现一个名为 .git的目录,所有Git需要的数据和资源都存放在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。

记录每次更新到仓库

         工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。

        已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是已提交,已修改或者已暂存

        所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。

        初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为已提交;在编辑过某些文件之后,Git将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件。

        使用 Git时的文件状态变化周期如下图所示:

检查当前文件状态

命令:git status

        作用:确定文件当前处于什么状态

初始化仓库后的文件

        如果在初始化仓库之后立即执行此命令,会看到类似这样的输出:

On branch masternothing to commit, working directory clean

        这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪的新文件,否则 Git会在这里列出来。最后,该命令还显示了当前所在的分支是 master,这是默认的分支名称,实际是可以修改的,现在先不用考虑。

未跟踪文件

        如果创建一个新文件 README,保存退出后运行 git status会看到该文件出现

echo '使用之前请先阅读我' > README

        在未跟踪文件列表中:

On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)READMEnothing added to commit but untracked files present (use "git add" to track)

        在状态报告中可以看到新建的 README文件出现在“Untracked files”下面。未跟踪的文件意味着 Git在之前的快照(提交)中没有这些文件;Git不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”,因而不用担心把临时文件什么的也归入版本管理。

跟踪新文件(暂存)

# 命令:
git add 文件名/目录名

        作用:跟踪一个新文件

        再次运行 git status命令,会看到 README文件已被跟踪,并处于暂存状态:

On branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   README

        只要在 “Changes to be committed”这行下面的,就说明是已暂存状态。

        如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。在git add后面可以指明要跟踪的文件或目录路径。如果是目录的话,就说明要递归跟踪该目录下的所有文件。(译注:其实 git add的潜台词就是把目标文件快照放入暂存区域,也就是 add file into staged area,同时未曾跟踪过的文件标识为已暂存。

修改已暂存文件

         现在 README文件都已暂存,下次提交时就会一并记录到仓库。假设此时,你想要在 README里再加点注释,重新编辑存盘后,准备好提交。不过且慢,再运行 git status看看:

On branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   READMEChanges not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   README

        README文件出现了两次!一次算已修改,一次算已暂存,这怎么可能呢?好吧,实际上 Git只不过暂存了你运行 git add命令时的版本,如果现在提交,那么提交的是添加注释前的版本,而非当前工作目录中的版本。所以,运行了 git add之后又作了修订的文件,需要重新运行 git add把最新版本重新暂存起来:

# 重新运行,把最新版本暂存起来
git add README# 查看状态
git statusOn branch masterNo commits yetChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   README

查看已暂存和未暂存的更新

        实际上 git status的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 git diff命令.这个命令它已经能解决我们两个问题了:当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交?

        1.当前做的哪些更新还没有暂存?,

                命令:git diff(不加参数直接输入 git diff)

         2.有哪些更新已经暂存起来准备好了下次提交?

                命令: git diff --cached 或者 git diff --staged(1.6.1以上)

提交更新

        当暂存区域已经准备妥当可以提交时,在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用 git status看下,是不是都已暂存起来了,然后再运行提交命令 git commit。

# 命令:
git commit

        注意:这种方式会启动文本编辑器以便输入本次提交的说明默认的提交消息包含最后一次运行 git status的输出,放在注释行里,另外开头还有一空行,供你输入提交说明。你完全可以去掉这些注释行,不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。

        另外也可以用 -m参数后跟提交说明的方式,在一行命令中提交更新:

# 命令:
git commit –m “message xxx”

        提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,

        可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照,

乱码解决:

        直接右键,选择Options…-->Text-->Locale里面选择zh_CN,Character set选择UTF-8;

        window -->UI language-->zh_CN;

        git config --global i18n.commitencoding utf-8

        git config --global i18n.logoutputencoding utf-8/gbk

Git解决中文乱码问题

跳过使用暂存区域

        尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁琐。Git提供了一个跳过使用暂存区域的方式,只要在提交的时候,给git commit加上 -a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add步骤

# 命令
git commit -a

移除文件

常规删除

        手动删除(或rm命令)工作区文件,删除相对于git来说是修改操作,但是它不会删除本地库的对象,反而在本地库进行了新增(添加了一个tree对象和commit对象)

         注:如果想要通过git重新得到删除的文件,后续再讲

git命令删除

        要从 Git中移除某个文件,就必须要从已跟踪文件清单中注册删除(确切地说,是在暂存区域注册删除),然后提交。可以用 git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

         1、运行 git rm删除工作目录文件,并记录此次移除文件的操作(将修改添加到暂存区)

        2、提交的时候,该文件就不再纳入版本管理了

文件改名

常规改名

git命令改名

# 改名命令
git mv newDemo.txt new.docx# 相当于
mv newDemo.txt new.docx
git add new.docx

其实,运行git mv就相当于运行了下面三条命令:
$ mv README.txt README
$ git rm README.txt
$ git add README

查看历史记录

# 命令
git log

        在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。

        完成这个任务最简单而又有效的工具是git log命令

$ git log
commit d86d577311a7fb263f1594d81c783bafe0f396a7 (HEAD -> master)
Author: jingerbo <jingerbo@newcapec.net>
Date:   Sun Aug 23 20:56:44 2020 +0800修改了文件名commit 8a3d0fbcdc691e96448b1c664089242c0111597f
Author: jingerbo <jingerbo@newcapec.net>
Date:   Sun Aug 23 20:52:56 2020 +0800提交new.txtcommit aa97d21c663f1588515fa3de4c15c2083c9d75d5
Author: jingerbo <jingerbo@newcapec.net>
Date:   Sun Aug 23 20:38:57 2020 +0800删除READMEcommit d80c4c1d201c52411c8545e628cc1ec037ca411a
Author: jingerbo <jingerbo@newcapec.net>
Date:   Sun Aug 23 20:23:32 2020 +0800跳过使用暂存区域commit eb8e6ced6854f2834e7d581d4eeec1df56c77881
Author: jingerbo <jingerbo@newcapec.net>
Date:   Sun Aug 23 19:15:19 2020 +0800提交修改的数据

        默认不用任何参数的话,git log会按提交时间列出所有的更新,最近的更新排在最上面。正如你所看到的,这个命令会列出每个提交的 SHA-1校验和、作者的名字和电子邮件地址、提交时间以及提交说明。

# git log参数git log --pretty=onelinegit log --oneline

         多屏显示控制方式:

        空格:向下翻页

        b:向上翻页

        上箭头/下箭头:向上一行/向下一行

        q:退出

总结

# 新增命令
在工作目录中新增文件
git add ./
git commit -m "msg"    # 修改命令
在工作目录中修改文件
git add ./
git commit -m "msg" # 查询命令
git  status   :  查看工作目录中文件的状态(已跟踪(已提交 已暂存 已修改) 未跟踪)
git  diff     :  查看未暂存的修改
git  diff --cache : 查看未提交的暂存
git  log --oneline : 查看提交记录# 删除 & 重命名
git rm 要删除的文件     git mv 老文件 新文件
git  status             git  status
git commit -m "msg"     git commit -m "msg"


http://chatgpt.dhexx.cn/article/i3UsJIil.shtml

相关文章

java开发中常用的Git命令详解

java开发中常用的Git命令详解&#xff08;IDEA内如何操作&#xff09; 一&#xff1a;写这篇文章的目的是什么&#xff1f;二&#xff1a;使用场景在哪里&#xff1f;1&#xff1a;当我们要使用idea去git仓库拉代码时&#xff0c;首先我们的idea得配置git工具2&#xff1a;项目…

Git 常用命令详解

Git 常用命令详解 1. Git 常用命令1.1 常用git 命令图表汇总1.2 配置个人信息1.3 创建版本库1.4 常用Git命令汇总 2. Git 解决代码冲突3. Git 分支管理4. Git 提交代码4.1 Git本地多次提交合并成一次提交4.1.1 多次提交合并需求4.1.2 多次提交合并Git操作步骤 1. Git 常用命令 …

git命令详解( 五 )

此篇只会来介绍rebase和merge的区别 rebase merge 区别 rebase 下面我们进行一个小练习来练习一下rebase 看一下题目要求&#xff1a; 共有三个特性分支 —— side1 side2 和 side3将这三分支按顺序推送到远程仓库因为远程仓库已经被更新过了&#xff0c;所以我们还要把那些工作…

git add 命令详解

1. 前言 2. git add 基本操作 3. git add 命令参数 4. git add 背后做了什么 1. 前言 众所周知&#xff0c;git 中有工作区、暂存区、版本库三大组成部分 工作区: 电脑中能看到的目录&#xff0c;也就是写代码的地方 暂存区: 英文叫 stage 或 index。一般存放在 .git 目录下…

git命令详解( 四 )

此篇为git命令详解的第四篇&#xff0c;话不多说&#xff0c;我们直接上知识点好吧 git Push 偏离的工作 gitPush: 此命令负责将你的变更上传到指定的远程仓库&#xff0c;并在远程仓库上合并你的新提交记录。一旦 git push 完成, 你的朋友们就可以从这个远程仓库下载你分享的成…

常用git命令详解

常用git命令 前言&#xff1a; 原链接&#xff1a;生哥哥牛逼(破音) 不争气的生哥哥链接404了&#xff0c;害得我要重新整理 一、概念&#xff1a; 1.基本概念 工作区&#xff1a;就是你在电脑里能看到的目录。 暂存区&#xff1a;英文叫 stage 或 index。一般存放在 .gi…

【Git】常用命令详解(循序渐进,逐步分析)

目录 一、Git常用命令 1.1、设置用户签名 1.2、初始化本地库 1.3查看本地库状态 1.3、添加文件到暂存区 1.4、将暂存区文件添加文件到本地库 1.5、查看历史版本&#xff08;提交历史记录&#xff09; 1.6、修改文件 1.7、版本穿梭 一、Git常用命令 1.1、设置用户签名…

windows大多数的弹窗提示内容是可以复制的(我们主要用于报错内容复制粘贴去百度)

现在以记事本保存时候的弹窗为例&#xff0c;用鼠标点击弹窗的任意位置&#xff0c;然后CtrlC&#xff0c;然后在新的记事本中可以粘贴这个提示内容了。如下图粘贴效果 1.大多数弹窗适用 2.主要用于把“报错内容”复制粘贴去百度 找解决方案

vscode 编辑特效 文字爆炸效果插件

1、在vscode应用扩展商店下载Power Mode插件 2、在vscode最左下角打开设置 在搜索框输入settings.json {"files.autoSave": "off","workbench.colorTheme": "Visual Studio Light","[json]": {"editor.quickSuggestio…

初始C语言——完数问题

问题描述&#xff1a; 描述&#xff1a;一个数如果恰好等于它的因子之和&#xff08;除本身以外&#xff09;&#xff0c;这个数就成为“完数”。例&#xff1a;6的因子为1&#xff0c;2&#xff0c;3&#xff0c;而6123&#xff0c;因此6是完数。找出1000以内的所有完数。 代…

C语言_求完数

2020年9月5日 11:11:31 /*一个数如果恰好等于它的因子之和&#xff0c;这个数就称为“完数”。例如 61&#xff0b;2&#xff0b;3&#xff0c; 编程找出 1000 以内的所有完数。 */ 两种方法&#xff1a; 方法一的年代比较久远&#xff0c;而且算法思维比较复杂和抽象&#x…

1000以内完数c语言程序_C语言完数编程题目详解

首先看一下完数的概念&#xff1a;完数&#xff0c;即完美数&#xff0c;一个数如果恰好等于除它本身外的因子之和&#xff0c;这个数就称为完数。例如61&#xff0b;2&#xff0b;3.(6的因子是1,2,3) 题目概要&#xff1a;请写一个C语言程序&#xff0c;要求输入一个数字n输出…

C语言完数计算

完数定义&#xff1a;如果一个数等于它的因子之和 例如:6123 编程工具&#xff1a;codeblocks #include<stdio.h> #include<stdlib.h> #include<math.h> void main() {int sum;//所有因子的的和int arr[20] { 0 };//声明一个数组用来存储所有的因子int n;…

C语言入门——1000以内的完数

完数定义 如果一个数恰好等于它的真因子之和&#xff0c;则称该数为“完全数” [2] 。各个小于它的约数&#xff08;真约数,列出某数的约数&#xff0c;去掉该数本身&#xff0c;剩下的就是它的真约数&#xff09;的和等于它本身的自然数叫做完全数&#xff08;Perfect numbe…

C语言———求”完数“

一个数如果恰好等于它的因子之和&#xff0c;这个数就称为 "完数 "。例如61&#xff0b;2&#xff0b;3&#xff0c;编程找出1000以内的所有完数。 分析过程 所谓完数&#xff0c;就是其因子之和&#xff08;不包括自己本身&#xff09;等于其本身&#xff0c;称其…

[C语言] [试题详解] 求1000之内的所有 完数

题目>>> 一个数如果恰好等于它的因子之和&#xff0c;这个数就称为“完数”。 例如&#xff0c;6的因子为1、2、3&#xff0c;而6&#xff1d;1&#xff0b;2&#xff0b;3&#xff0c;因此6是“完数”。 编程序找出1000之内的所有完数&#xff0c;并…

车载行车记录仪EMC浪涌防护方案图

客户向东沃技术寻求帮助&#xff0c;具体事情是这样的&#xff1a;客户公司自己生产的车载行车记录仪&#xff0c;在DC电源端口测试时&#xff0c;有故障&#xff0c;发生了小概率DC芯片损坏的。具体如下图所示&#xff1a; 案例分析 客户原理图如下&#xff1a; 根据客户原…

出门在外,你需要一个行车记录仪

5月3日下午&#xff0c;一段行车记录仪视频在网上疯传。在这段仅有35秒钟的视频里&#xff0c;一名身穿黑色上衣、白色短裤的男子&#xff0c;开车将一名长发女子逼停&#xff0c;当街殴打。女司机被暴打至骨折脑震荡&#xff0c;身上多处淤青。这段视频曝光后&#xff0c;引起…

锐动SDK应用于行车记录仪

方案架构 手机端直播与录播功能忠实记录旅途中各种突发事件&#xff0c;还原事实真相&#xff0c;与家人和朋友分享沿途美景&#xff0c;一同感受美妙之旅。 强大的视频编辑功能&#xff0c;像编辑图片一样给视频添加各种滤镜&#xff0c;配音&#xff0c;配乐&#xff0c;标题…

行车记录仪数据删除如何恢复?

10月&#xff0c;公安部交通管理局权威发布&#xff0c;截至2018年9月&#xff0c;全国机动车保有量达3.22亿辆&#xff1b;机动车驾驶人达4.03亿人。随着机动车和驾驶人数量的增加&#xff0c;交通事故和机动车交通事故责任纠纷案件也在逐年上涨。 部分案件常常因没有目击证人…