Git:常用命令(一)

news2025/7/9 12:06:34

取得项目的Git 仓库

从当前目录初始化

1 git init

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

如果当前目录下有几个文件想要纳入版本控制,需要先用git add 命令告诉Git 开始对这些文件进行跟踪,然后提交。

1 git add doc.txt
2 git commit -m "第一次使用命令行提交"

从现有仓库克隆

1 git clone https://github.com/happyframework/HappyFramework.git

这会在当前目录下创建一个名为“HappyFramework” 的目录,其中内含一个.git 的目录,并从同步后的仓库中拉出所有的数据,取出最新版本的文件拷贝。如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令最后指定:

git clone https://github.com/happyframework/HappyFramework.git MyFolder

记录每次更新到仓库

请记住,工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。

在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,然后等最后一次性提交暂存区域的所有文件更新,如此重复。

检查当前文件状态

要确定哪些文件当前处于什么状态,可以用git status 命令。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:

新建一个文件后的效果是:

跟踪新文件

使用命令git add 开始跟踪一个新文件。

1 git add test.txt

此时再运行git status 命令:

暂存已修改文件

现在我们修改下之前已跟踪过的文。

要暂存这次更新,需要运行git add 命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)。

现在让我们运行git add 将benchmarks.rb 放到暂存区,然后再看看git status的输出:

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

实际上Git 只不过暂存了你运行git add 命令时的版本,如果现在提交,那么提交的是之前的版本,而非当前工作目录中的版本。所以,运行了git add 之后又作了修订的文件,需要重新运行git add 把最新版本重新暂存起来。

忽略某些文件

 一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,像是日志或者编译过程中创建的等等。我们可以创建一个名为.gitignore 的文件,列出要忽略的文件模式。

文件.gitignore 的格式规范如下:

  • 所有空行或者以注释符号# 开头的行都会被Git 忽略。
  • 可以使用标准的glob 模式匹配。
  • 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的glob 模式是指shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个a,要么匹配一个b,要么匹配一个c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9] 表示匹配所有0 到9 的数字)。

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

实际上git status 的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用git diff 命令。稍后我们会详细介绍git diff,不过现在,它已经能回答我们的两个问题了:当前作的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交? git diff 会使用文件补丁的格式显示具体添加和删除的行。

要查看尚未暂存的文件更新了哪些部分,不加参数直接输入git diff:

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用git diff --staged 命令。

请注意,单单git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行git diff 后却什么也没有,就是这个原因。

提交更改

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

记住,提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

跳过使用暂存区域

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

移除文件

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

如果只是简单地从工作目录中手工删除文件,还必须再运行git rm 记录此次移除文件的操作。

最后提交的时候,该文件就不再纳入版本管理了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项-f(译注:即force 的首字母),以防误删除文件后丢失修改的内容。

另外一种情况是,我们想把文件从Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆.a 编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在.gitignore文件中补上,用--cached 选项即可。

移动文件

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

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

相关文章

考pmp有用么?

PMP考出来究竟有什么用,这个问题一直是站在边缘的朋友经常思考的问题,其实我想说的是,当能力和经验都充足的时候,可能这单单的一张证书就能有莫大的作用,帮助你实现目前所追求的东西。 当我利用这张证书达到我的目的之…

idea部署javaSE项目(awt+swing项目)_idea导入eclipse的javaSE项目

一.idea打开项目 选择需要部署的项目 二、设置JDK 三、引入数据库驱动包 四、执行sql脚本 四、修改项目的数据库连接 找到数据库连接文件 五.其他系统实现 JavaSwing实现学生选课管理系统 JavaSwing实现学校教务管理系统 JavaSwingsqlserver学生成绩管理系统 JavaSwing用…

开源radishes高仿网易云音乐完整源码,可试听和下载“灰色”歌曲,跨平台的无版权音乐平台

源码介绍 Radishes是项目名称,是由萝卜翻译而来。可以在这里试听和下载“灰色”歌曲,是一个可以跨平台的无版权音乐平台。 萝卜音乐界面和功能参考 windows 网易云音乐界面和 ios 的网易云音乐 安装依赖 cd radishes/ yarn bootstrap 运行项目 web:…

Linux shell编程学习笔记38:history命令

0 前言 使用DOS的朋友,都知道可以在命令行提示符中使用上下光标键来浏览最近执行过的命令,这是基于DOS提供的DosKey命令。 而在Unix和Linux的shell中,我们同样可以使用上下光标键来浏览最近执行过的命令历史纪录(history&#x…

YOLOv8改进有效系列目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

👑 YOLOv8改进有效系列目录 👑 前言 Hello,各位读者们好 本专栏自开设两个月以来已经更新改进教程60余篇其中包含C2f、主干、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新。同时本人一些讲解视频…

基于Python的新闻爬取和推荐系统实践

基于Python的新闻爬取和推荐系统实践 项目概述数据集来源技术栈功能特点普通用户功能管理员功能需求 创新点 项目概述 在这个全功能的新闻爬取和推荐系统项目中,我们致力于构建一个高效、智能的平台,为用户提供个性化的新闻阅读体验。采用了Python语言&…

nodejs+vue+ElementUi摄影预约服务网站系统91f0v

本系统提供给管理员对首页,个人中心,用户管理,员工管理,摄影套餐管理,套餐系列管理,客片欣赏管理,摄影预约管理,摄影订单管理,取片通知管理,摄影评价管理&…

计算机操作系统(OS)——P4文件管理

1、初始文件管理 1.1、文件的属性 1)文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。 2)标识符:一个系统内的各文件标识符唯一,对用户来说毫无…

stm32 HAL库 4096线ABZ编码器

[TOC]目录 ABZ编码器 4096线 买的是这个 AB相代表计数方向,Z代表过零点 cubemx配置 定时器Encoder 也可以选上DMA 中断 Z相GPIO中断 找一个空闲管脚 打开对应中断 代码 不用DMA int main(void) {short Enc_cnt 0;HAL_TIM_Encoder_Start_IT(&ht…

智慧园区物联综合管理平台之感知连接管理能力简述

物联管理平台感知连接管理主要实现物联传感层设备设施接入通道、 协议解析、 安全保证、 实时数据采集、 控制等管理。 主要包含: 物联南向接入通道管理、 设备智能化协议解析适配(含非设备类物联传感接入)、 物联传感接入注册、 物联传感安全鉴权、 物联感知数据的汇聚/处理…

普中STM32-PZ6806L开发板(使用过程中的问题收集)

Keil使用ST-Link 报错 Internal command error 描述: 在某一次使用过程中,前面都是正常使用, Keil在烧录时报错Internal command error, 试了网上的诸多方式, 例如 升级固件;ST-Link Utility 清除;Keil升级到最新版本;甚至笔者板子的Micro头也换了,因为坏…

kali2.0安装VMware Tools 和自定义改变分辨率

kali2.0安装VMware Tools 和自定义改变分辨率 VMware Tools 简介:VMware Tools安装:自定义改变分辨率:xrandr命令修改分辨率: 前言: 因为kali2.0比较老 所以需要手动安装 WMware Tools 进行复制粘贴操作! …

CA和证书

安全机制 墨菲定律 如果有两种选择,其中一种将导致灾难,则必定有人会作出这种选择。即:做事不要有侥幸心理。 常用安全技术 认证、授权、审计、安全通信 加密算法和协议 对称加密算法 加密和解密使用同一个秘钥。 特性 加密、解密使…

代码随想录刷题第三十五天| 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球|

代码随想录刷题第三十五天 柠檬水找零 (LC 860) 题目思路: 代码实现: class Solution:def lemonadeChange(self, bills: List[int]) -> bool:five 0ten 0for money in bills:if money 5:five1if money 10:if five>0:five-1ten1else:return …

【基于C++HTTP 服务器的epoll 改造】

打印模块 Log.hpp 方便使用 #pragma once#include <iostream> #include <string> #include <ctime>#define INFO 1 #define WARNING 2 #define ERROR 3 #define FATAL 4#define LOG(level, message) Log(#level, message, __FILE__, __LINE__)void …

【Python特征工程系列】教你利用XGBoost模型分析特征重要性(源码)

这是Python特征工程系列原创文章&#xff0c;我的第186篇原创文章。 一、问题 应用背景介绍&#xff1a; 如果有一个包含数十个甚至数百个特征的数据集&#xff0c;每个特征都可能对你的机器学习模型的性能有所贡献。但是并不是所有的特征都是一样的。有些可能是冗余的…

RK3568测试tdd

RK3568测试tdd 一、门禁取包二、烧录三、跑tdd用例四、查看结果参考资料 一、门禁取包 右键复制链接&#xff0c;粘贴下载&#xff1b;解压到文件夹&#xff1b; 二、烧录 双击\windows\RKDevTool.exe打开烧写工具&#xff0c;工具界面击烧写步骤如图所示&#xff1a; 推荐…

部署es集群

在单机上利用docker容器运行多个es实例来模拟es集群。不过生产环境推荐大家每一台服务节点仅部署一个es的实例。部署es集群可以直接使用docker-compose来完成&#xff0c;但这要求你的Linux虚拟机至少有4G的内存空间 创建es集群 编写docker-compose文件 首先编写一个docker-…

微信公众号没有留言功能,怎么破?

为什么公众号没有留言功能&#xff1f;2018年2月12日&#xff0c;TX新规出台&#xff1a;根据相关规定和平台规则要求&#xff0c;我们暂时调整留言功能开放规则&#xff0c;后续新注册帐号无留言功能。这就意味着2018年2月12日号之后注册的公众号不论个人主体还是组织主体&…

[spark] SaveMode

https://spark.apache.org/docs/latest/api/java/index.html?org/apache/spark/sql/SaveMode.html Overwrite 覆盖模式是指将DataFrame保存到数据源时&#xff0c;如果数据/表已经存在&#xff0c;则现有数据将被DataFrame的内容覆盖。 注意: Overwrite 模式会覆盖已存在的表…