Git常用命令解释

目录

    • 执行git status的信息解释
    • Git基本操作
    • Git仓库/分支相关
        • 远程跟踪分支的概念

本文记录学习git命令行的过程和命令的解释

执行git status的信息解释

Changes to be committed:只要在 Changes to be committed 这行下面的,就说明是已暂存状态。 如果此时提交,那么该文件在你运行 git add 时的版本将被留存在后续的历史记录中
Changes not staged for commit :说明git已跟踪文件的内容发生了变化,但还没有放到暂存区。 通俗理解就是在工作区发生了改动的文件但是没有被暂存
Untracked files:未追踪的文件

Git基本操作

Git已追踪的文件一般处于三种状态,分别是已提交、已修改和已暂存。
这里说一下在各个操作时被git管理的文件的状态
如果你的项目使用git init初始化了,那么git将会开始工作。但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪(untracked)。
将文件/夹交给git追踪:git add <file>可以使用该命令将文件交给git进行追踪,执行完该命令之后该文件将被存放到暂存区
将文件从暂存区回退到工作区(取消暂存的文件):git reset head <file>使用该命令将文件从暂存区回退到工作区,或者 使用git restore --staged <file>也可以取消你在暂存区的文件
将文件添加到暂存区:git add <file> 是的,同样使用add命令,这里需要解释的是,当你将文件添加到暂存区时,git记录的是在你执行该命令时该文件的修改状态!如果你在添加到暂存区之后仍然修改了该文件,那么之后的修改记录是不会被暂存区保存的,只会在工作区提示你对该文件做了改动,如果你需要将之后的修改也添加到暂存区,需要重新执行该命令!
查看当前文件的改动:git diff <file>该命令可以查看你工作区的文件的改动,准确的说,如果你只键入git diff <file> 的话,它查看的是你工作区中尚未暂存的改动,如果你在工作区修改了A文件,然后将A添加到暂存区之后,使用git diff A时将不会看到任何改动,这是因为该文件已经被添加到暂存区了。如果你想查看暂存区的文件改动情况,可以使用可以用 git diff --staged 命令(或者git diff --cached,等价)。 这条命令将比对已暂存文件与最后一次提交的文件差异
直接从工作区中提交:git commit -a -m “” 该命令主要关注-a, 只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交。记住,是所有在工作区已改动的文件,如果你仍然不想一次性提交所有文件,那么就不要使用该命令
删除git追踪的文件:git rm <file> 使用此命令删除被git管理的源文件,但如果该文件在执行命令前发生过改动,则无法直接删除,可以添加–cached解除git追踪或-f强制删除
不让git追踪某个文件/夹,但保留文件/夹:git rm -r --cached <file>,使用该命令可以将已追踪的文件取消追踪,但不会删除源文件。其中-r的意思是递归的处理,该命令和上面提到的git rm --cached的区别就是该命令支持对文件夹操作,支持递归的处理(取消追踪)
移动文件或重命名:git mv <oldFilePath> <newFilePath> 该命令可以重命名或移动文件 具体参见pro git
查看提交日志:git log 该命令涉及较多子参数,具体参见pro git
撤销操作(修正你的提交):git commit --amend如果你刚刚提交了一次,但是后来你发现刚刚的那次提交文件不全,例如少提交了一些文件或者提交信息写错了,你可以使用该命令来修正你的这次提交。该命令会将你当前暂存区内的文件进行提交,并且会启动一个文本编辑器,你可以修改本次提交的message,:wq!退出该编辑器时,git会将你刚才暂存区内的文件进行提交,这个提交和你刚才提交的commit是同一个(记住,只有没push时才可以进行该操作!不然不会合并成同一个commit)
撤销你在工作区的修改:git restore <file> ,这个命令会撤销你在工作区的所有改动,如果你指定的文件在暂存区则不受到影响。另外使用git checkout – <file>可以达到同样的效果。原理是是Git 会用最近提交的版本覆盖掉它,不过暂存区的文件不受影响。(不要对暂存区的文件做该操作,没用)

Git仓库/分支相关

git fetch <仓库> <分支名>:该命令将会从远程仓库的指定分支中拉取你本地没有的数据,执行完成后不会自动合并,需要你手动进行合并操作
git pull <仓库> <分支名>:该命令拉取远程仓库中指定分支的数据到你当前分支中,如果拉取的某个文件和你本地的工作区有冲突文件git将不会执行合并而是提示你先提交或暂存后再进行操作。如果你本地已经提交了A文件,但是拉取的A文件已经被别人修改了,这个时候如果修改的不是同一处则git会自行处理,否则需要你手动合并后并提交
git push <仓库> <分支名>:将你本地仓库的提交推送到远程仓库中,很简单的一个命令,但是有时会被提示拒绝push,这是因为当你和其他人协同工作时,他们先推送到远程仓库然后你再推送到远程仓库,你的推送就会毫无疑问地被拒绝(这里和涉不涉及到同一个文件没有任何关系)。你必须先拉取远程仓库的最新改动,然后再push。tips:该命令其实是一个简写,实际上是git push <远程仓库> <本地分支>:<远程分支> ,意思是将本地的本地分支推送到远程仓库的远程分支上
更改远程仓库的名字:git remote rename <oldName> <newName> 我们知道clone下来的仓库默认叫origin 如果你想修改远程仓库的名字,使用git remote rename origin XXX即可。值得注意的是这同样也会修改你所有远程跟踪的分支名字。 那些过去引用 origin/master 的现在会引用XXX/master。
移除远程仓库:git remote rm/remove <仓库名> 如果你想移除一个远程仓库,可以使用该命令,但是请慎重,一旦你使用这种方式删除了一个远程仓库,那么所有和这个远程仓库相关的远程跟踪分支以及配置信息也会一起被删除。
添加远程仓库:git remote add <shortname> <url> 该命令可以添加一个远程仓库,shortname则是你设定的别名
创建分支:git branch <分支名>,使用该命令创建一个新的分支,新分支起点为你当前所在分支的最新commit
切换分支:git checkout <分支名> 使用该命令切换到指定分支
快速创建一个分支并切换到该分支:git checkout -b <分支名> 该命令可以创建一个新分支并切换到新分支中
删除分支:git branch -d <分支名> 使用该命令删除分支,git branch -D <分支名>是强制删除。
合并分支:git merge <分支名> 该命令会将指定的分支合并到你当前所属的分支(也就是HEAD所指向的分支),如果出现冲突,需要解决冲突。
查看分支:git branch 该命令查看当前本地所有分支
查看分支并且显示每个分支的最后一次提交:git branch -v 该命令和上一个查看分支差不多,只是显示的信息要多一些,会显示出每个分支的最后一次提交的SHA1和提交message,更直观
关于–merged和–no-merged:该命令是和git branch [选填–merged和–no-merged]一起使用的,首先它的作用是以你当前所在分支为参照物,–merged查看其他哪些分支是已经合并到当前分支的分支,–no-merged查看其他哪些分支是未合并到当前分支的分支(查看所有包含未合并工作的分支)。一般来说,那些已经合并到当前分支的分支是可以删除的(这里的删除分支命令依然是以你当前所在分支为参照物的),因为你已经将它们整合到了当前的分支中,删除它并不会失去任何东西。但是如果你使用删除命令去删除未合并到当前分支的分支时会被拒绝,因为你删除的目标分支中包含了未合并的工作,除非你使用强制删除git branch -D <分支名>,不然还是谨慎操作,你可以尝试先合并一下。
提示:你可以在使用该命令时提供一个附加的参数而改变当前分支参照物。例如,你当前在dev分支,你想查看尚未合并到 master 分支的有哪些?使用git branch --no–merged master 查看从而避免切换到master分支

远程跟踪分支的概念

远程跟踪分支是远程分支状态的引用。它们是你无法移动的本地引用。一旦你进行了网络通信, Git 就会为你移动它们以精确反映远程仓库的状态。请将它们看做书签, 这样可以提醒你该分支在远程仓库中的位置就是你最后一次连接到它们的位置。它们以 <remote>/<branch> 的形式命名。比较常见的是 origin/master,该分支就是一个远程追踪分支,一般地,执行git fetch origin master之后,git就会从远程仓库抓取本地没有的数据,移动 origin/master 指针到更新之后的位置,你可以手动合并该远程分支到你的本地分支上。
一般地,如果你刚加入一个项目,该项目中其他成员都维护着一个分支A,那么你拉取该项目的时候,你本地是不会有A分支的,本地只会存在一个远程跟踪分支origin/A–它是一个不可修改的指针,那么你得需要在本地建立一个分支关联到该分支,使用git checkout -b <建立的分支名> <remote>/<branch>
例如 git checkout -b dev origin/dev 这会在你本地新建一个分支dev并且关联到远程跟踪分支origin/dev,该分支的起点为origin/dev上的最新commit(并不是你当前所在本地分支的最新commit)
如果你想把已经存在的本地分支关联到远程跟踪分支,可以使用git branch --set-upstream-to=origin/remote_branch your_branch命令,例如你本地有分支K,你想把分支K关联到远程跟踪分支origin/dev,首先先切换到K分支,然后执行git branch --set-upstream-to=origin/dev 即成功设置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用css 动画实现,水波纹的效果

每日鸡汤&#xff1a;每个你想要学习的瞬间都是未来的你向自己求救 需求&#xff0c;实现水波纹动画效果&#xff0c;要求中心一个圆点&#xff0c;然后有3个圈&#xff0c;一圈一圈的向里面缩小。 说实话我第一个想到了给3个圈设置不同的宽高&#xff0c;然后设置动画0-100%&a…

用Python实战,畅享音乐海洋,一键采集你喜爱的音乐!

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用: requests >>> pip install requests re 第三方模块安装方法&#xff1a; win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速…

GitHub发布Copilot Chat公测版,助力开发者编写代码

近日微软GitHub推出了Copilot Chat 的公开测试版&#xff0c;而这个版本不仅仅局限于“代码缺省补充”与“代码纠错”&#xff0c;还能直接基于上文&#xff0c;自动联想出后文。 据了解&#xff0c;该AI工具主要用来助力开发者编写代码&#xff0c;可直接集成到开发者的桌面 …

linux五 进程控制

2 进程相关概念 2.1 程序和进程 程序&#xff0c;是指编译好的二进制文件&#xff0c;在磁盘上&#xff0c;占用磁盘空间, 是一个静态的概念. 进程&#xff0c;一个启动的程序&#xff0c; 进程占用的是系统资源&#xff0c;如&#xff1a;物理内存&#xff0c;CPU&#xf…

Python基础知识-2

名片管理系统 def addHandler():print("添加名片")def deleteHandler():IsDelete input("(づ&#xffe3;3&#xffe3;)づ╭❤&#xff5e;亲~您确定要删除名片吗&#xff1f;Yes/No").upper()if (IsDelete YES):print("删除名片")else:prin…

GB/T 25000.51解读——软件产品的易用性怎么测?

GB/T 25000.51-2016《软件产品质量要求和测试细则》是申请软件检测CNAS认可一定会用到的一部国家标准。在前面的文章中&#xff0c;我们为大家整体介绍了GB/T 25000.51-2016《软件产品质量要求和测试细则》国家标准的结构和所涵盖的内容以及对软件产品的八大质量特性中的功能性…

安全初级:字符编码

字符编码 字符编码&#xff1a;是一种映射规则&#xff0c;根据映射规则将字符映射成其他形式的数据在计算机中存储和传输。 常用的编码 编码制定时间作用ASCII1967表示英语及西欧语言GB23121980国家简体中文字符集&#xff0c;兼容ASCIIUnicode1991国际标准化组织统一标准字…

自定义MVC

目录 一.什么是MVC 1.1.三层架构和MVC的区别 二.自定义MVC工作原理图 三.自定义mvc实现 3.1 创建web工程 3.2 中央处理器 3.3 Action接口定义 3.4 实现子控制器 3.5 完善中央控制器 3.5.1 请求分发功能 3.5.2 使用配置文件配置action 3.5.3 请求参数处理 1. 定义接…

[JAVAee]阻塞队列

阻塞队列的含义 有队列这两个字的,少不了"先进先出"这个特性 阻塞队列是一种线程安全的数据结构,主要的特性有: 当队列满的时候, 继续入队列就会阻塞, 直到有其他线程从队列中取走元素.当队列空的时候, 继续出队列也会阻塞, 直到有其他线程往队列中插入元素. 阻塞…

DTH11 温湿度模块

文章目录 前言一、DTH11 模块介绍二、设备树设置三、驱动程序四、测试程序五、上机测试及效果总结 前言 DHT11 是一款可测量 温度 和 湿度 的传感器。比如市面上一些空气加湿器&#xff0c;会测量空气中湿度&#xff0c;再根据测量结果决定是否继续加湿。 一、DTH11 模块介绍 …

iOS 单元测试之常用框架 OCMock 详解

目录 前言&#xff1a; 一、单元测试 1.1 单元测试的必要性 1.2 单元测试的目的 - 约束条件是否通过形式参数来传送。 1.3 单元测试依赖的两个主要框架 二、OCMock 的集成与使用 2.1 OCMock 的集成方式 2.2 OCMock 的使用方法 2.3 mock 使用限制 前言&#xff1a; OC…

【unity】ShaderGraph学习笔记

【unity】ShaderGraph学习笔记 创建ShaderGraph 创建URP的shaderGraph文件 在Project面板里Create→ShaderGraph→URP→这里主要有几个选项 Lit Shader Graph&#xff1a;有光照三维着色器 Unlit Shader Graph&#xff1a;无光照三维着色器 Sprite Custom Lit Shader Gra…

Linux常用操作命令集合

1、 开机启动脚本的设置 如何增加一个服务&#xff1a; 服务脚本必须存放在/etc/ini.d/目录下&#xff1b;&#xff08;具体请参照Centos JDK 和tomcat部署笔记&#xff09; chkconfig --add servicename在chkconfig工具服务列表中增加此服务&#xff0c;此时服务会被在/etc/r…

Elasticsearch 简单搜索查询案例

1.MySql表结构/数据 SET FOREIGN_KEY_CHECKS0;-- ---------------------------- -- Table structure for user_lables -- ---------------------------- DROP TABLE IF EXISTS user_lables; CREATE TABLE user_lables (id varchar(255) DEFAULT NULL COMMENT 用户唯一标识,age…

CNN(卷积神经网络)的实现过程详解

概要 在图像处理领域&#xff0c;CNN(卷积神经网络)处于绝对统治地位&#xff0c;但对于CNN具体是如何用神经网络实现的&#xff0c;能找到的介绍要么是一大堆数学公式&#xff0c;要么是大段晦涩的文字说明&#xff0c;读起来很是辛苦&#xff0c;想写好一片完整的而且有深度的…

【开源项目】低代码数据可视化开发平台-Datav

Datav 基本介绍 Datav是一个Vue3搭建的低代码数据可视化开发平台&#xff0c;将图表或页面元素封装为基础组件&#xff0c;无需编写代码即可完成业务需求。 它的技术栈为&#xff1a;Vue3 TypeScript4 Vite2 ECharts5 Axios Pinia2 在线预览 账号: admin 密码: 123123预…

Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建

Java版知识付费-轻松拥有知识付费平台 多种直播形式&#xff0c;全面满足直播场景需求 公开课、小班课、独立直播间等类型&#xff0c;满足讲师个性化直播场景需求&#xff1b;低延迟、双向视频&#xff0c;亲密互动&#xff0c;无论是互动、答疑&#xff0c;还是打赏、带货、…

Redis底层封装细节

日常我们程序员在使用redis做缓存的时候&#xff0c;很少会直接使用到RedisTemplate直接操作k-v键值对&#xff0c;而是通过对RedisTemplate原生代码的封装&#xff0c;来构建我们日常便于使用习惯的代码来操作数据&#xff0c;这里我分享一下日常基本的对RedisTemplate底层的封…

[nlp] tokenizer加速:fast_tokenizer=True

fast_tokenizer 是一个布尔值参数,用于指定是否使用快速的 tokenizer。在某些情况下,使用快速的 tokenizer 可以加快模型训练和推理速度。如果 fast_tokenizer 参数为 True,则会使用快速的 tokenizer;否则,将使用默认的 tokenizer。 快速的 tokenizer 通常使用一些技巧来减…

使用Newtonsoft直接读取Json格式文本(Linq to Json)

使用Newtonsoft直接读取Json格式文本&#xff08;Linq to Json&#xff09; 使用 Newtonsoft.Json&#xff08;通常简称为 Newtonsoft&#xff09;可以轻松地处理 JSON 格式的文本。Newtonsoft.Json 是 .NET 中一个流行的 JSON 处理库&#xff0c;它提供了丰富的功能和灵活性。…