当前位置: 首页 > news >正文

【第三节】Git 基本操作指南

目录

前言

一、获取与创建项目

1.1 git init

1.2 git clone

二、基本快照操作

2.1 git add

2.2 git status

2.3 git diff

2.4 git commit

2.5 git reset HEAD

三、 文件管理

3.1 git rm

3.2 git mv

四、Git 文件状态

5.1 工作目录

5.2 暂存区

5.3 本地仓库

5.4 文件状态的转换流程

五、Git 常用命令总结


前言

        本文将详细介绍 Git 的基本操作,包括如何创建和保存项目快照、如何获取和创建项目、以及如何管理项目的文件和提交记录。通过本文,您将掌握 Git 的核心命令和操作流程,从而更好地管理您的项目。

        Git 常用的是以下 6 个命令:git clonegit pushgit addgit commitgit checkoutgit pull,后面我们会详细介绍。

一、获取与创建项目

1.1 git init

        `git init` 命令用于在本地目录中创建一个新的 Git 仓库。该命令会将当前目录初始化为一个 Git 仓库,并生成一个 `.git` 子目录,用于存储项目的快照数据。

**示例:**

$ mkdir runoob
$ cd runoob/
$ git init
Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/

        执行 `git init` 后,当前目录中会生成一个 `.git` 目录,表示 Git 仓库已成功创建。

1.2 git clone

        `git clone` 命令用于从远程仓库复制一个项目到本地。通过该命令,您可以获取项目的完整历史记录,并开始进行修改或查看。

**示例:**

$ git clone git@github.com:schacon/simplegit.git
Cloning into 'simplegit'...
remote: Counting objects: 13, done.
remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
Receiving objects: 100% (13/13), done.
Resolving deltas: 100% (2/2), done.
Checking connectivity... done.

        克隆完成后,当前目录下会生成一个与远程仓库同名的目录。

二、基本快照操作

2.1 git add

        `git add` 命令用于将文件添加到暂存区(staging area)。暂存区是 Git 中用于保存即将提交的文件的区域。

**示例:**

$ touch README
$ touch hello.php
$ git add README hello.php

        执行 `git add` 后,文件会被添加到暂存区,等待提交。

2.2 git status

        `git status` 命令用于查看当前项目的文件状态。通过该命令,您可以了解哪些文件已被修改、哪些文件已被暂存,以及哪些文件尚未被跟踪。

**示例:**

$ git status -s
A  README
A  hello.php

2.3 git diff

        `git diff` 命令用于查看文件的修改内容。它可以显示已暂存与未暂存的改动,帮助您了解项目的变更情况。

**示例:**

$ git diff
diff --git a/hello.php b/hello.php
index e69de29..69b5711 100644
--- a/hello.php
+++ b/hello.php
@@ -0,0 +1,3 @@
+<?php
+echo '菜鸟教程:www.runoob.com';
+?>

2.4 git commit

        `git commit` 命令用于将暂存区的内容提交到本地仓库。每次提交都会生成一个快照,记录项目的当前状态。

**示例:**

$ git commit -m '第一次版本提交'
[master (root-commit) d32cf1f] 第一次版本提交2 files changed, 4 insertions(+)create mode 100644 READMEcreate mode 100644 hello.php

2.5 git reset HEAD

        `git reset HEAD` 命令用于取消已暂存的文件。通过该命令,您可以将文件从暂存区移除,但保留在工作目录中。

**示例:**

$ git reset HEAD hello.php
Unstaged changes after reset:
M    hello.php

三、 文件管理

3.1 git rm

        `git rm` 命令用于从 Git 仓库中移除文件。该命令会将文件从暂存区和工作目录中删除。

**示例:**

$ git rm hello.php
rm 'hello.php'
$ ls
README

3.2 git mv

`git mv` 命令用于移动或重命名文件。通过该命令,您可以轻松地对文件进行重命名或移动操作。

**示例:**

$ git mv README README.md
$ ls
README.md

四、Git 文件状态

        Git 的文件状态分为三种:工作目录(Working Directory)、暂存区(Staging Area)、本地仓库(Local Repository)。了解这些概念及其交互方式是掌握 Git 的关键。

5.1 工作目录

工作目录是你在本地计算机上看到的项目文件。它是你实际操作文件的地方,包括查看、编辑、删除和创建文件。所有对文件的更改首先发生在工作目录中。

在工作目录中的文件可能有以下几种状态:

  • 未跟踪(Untracked):新创建的文件,未被 Git 记录。

  • 已修改(Modified):已被 Git 跟踪的文件发生了更改,但这些更改还没有被提交到 Git 记录中。

5.2 暂存区

暂存区,也称为索引(Index),是一个临时存储区域,用于保存即将提交到本地仓库的更改。你可以选择性地将工作目录中的更改添加到暂存区中,这样你可以一次提交多个文件的更改,而不必提交所有文件的更改。

示例:

bash

复制

git add <filename>  # 添加指定文件到暂存区
git add .           # 添加所有更改到暂存区

5.3 本地仓库

本地仓库是一个隐藏在 .git 目录中的数据库,用于存储项目的所有提交历史记录。每次你提交更改时,Git 会将暂存区中的内容保存到本地仓库中。

示例:

bash

复制

git commit -m "commit message"  # 提交暂存区的更改到本地仓库

5.4 文件状态的转换流程

  1. 未跟踪(Untracked):新创建的文件最初是未跟踪的。

  2. 已跟踪(Tracked):通过 git add 命令将未跟踪的文件添加到暂存区后,文件变为已跟踪状态。

  3. 已修改(Modified):对已跟踪的文件进行更改后,这些更改会显示为已修改状态。

  4. 已暂存(Staged):使用 git add 命令将修改过的文件添加到暂存区后,文件进入已暂存状态。

  5. 已提交(Committed):使用 git commit 命令将暂存区的更改提交到本地仓库后,这些更改被记录下来

五、Git 常用命令总结

git 创建仓库的命令: 

创建与提交快照的命令:

提交日志:

远程操作:


http://www.mrgr.cn/news/80465.html

相关文章:

  • 网络安全与信息安全的区别
  • ScottPlot学习的常用笔记
  • 【密码学】ZUC祖冲之算法
  • 【数据分享】2013-2023年我国省市县三级的逐年CO数据(免费获取\excel\shp格式)
  • Mave下载、安装以及idea(2024)进行配置
  • 数据结构初阶---二叉树---堆
  • 微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列
  • 【数据结构——内排序】二路归并排序(头歌实践教学平台习题)【合集】
  • 概率论得学习和整理24:EXCEL的各种图形,统计图形
  • 【NLP】序列到序列(seq2seq)建模工具fairseq使用详解
  • js 函数定义域
  • js 值传递与引用传递
  • OpenCV圆形标定板检测算法findGrid原理详解
  • 代码随想录算法训练营第四十八/九天 | 图 | 深度搜索 | 广度搜索
  • 试题转excel;word转excel;大风车excel
  • DockerUI info存在未授权访问漏洞
  • HB1910数字IP程控交换机generate.php存在RCE漏洞
  • 【数据结构——查找】二分查找(头歌实践教学平台习题)【合集】
  • RabbitMQ 消息持久化/镜像队列/lazy对时延影响
  • 具身智能之视觉语言导航(VLN)类别与基准
  • ActiveMQ 反序列化漏洞CVE-2015-5254复现
  • BERTective: Language Models and Contextual Information for Deception Detection
  • Gate学习(7)引入体素源
  • React简单入门 - [Next.js项目] - 页面跳转、AntD组件、二级目录等
  • 【SQL】语句练习
  • SpringBoot项目监听端口接受数据(Netty版)