Git 版本控制系统的完整指南
什么是 Git?
Git 是一个流行的版本控制系统。它是由 Linus Torvalds 于 2005 年创建的,自那时以来由 Junio Hamano 维护。
它用于:
- 跟踪代码更改
- 跟踪谁做出了更改
- 编写协作
Git 做什么?
- 使用仓库管理项目
- 克隆项目以在本地副本上工作
- 使用暂存和提交来控制和跟踪更改
- 分支和合并允许在项目的不同部分和版本上进行工作
- 将项目的最新版本拉到本地副本
- 将本地更新推送到主项目
使用 Git
- 在文件夹上初始化 Git,使其成为一个仓库
- Git 现在会创建一个隐藏的文件夹,以跟踪该文件夹中的更改
- 当文件被更改、添加或删除时,它被视为已修改
- 你选择要暂存的已修改文件
- 已暂存的文件被提交,这会促使 Git 存储文件的永久快照
- Git 允许你查看每个提交的完整历史。
- 你可以恢复到以前的任何提交。
- Git 不会在每个提交中存储文件的单独副本,而是跟踪每个提交中所做的更改!
切换平台:
- 将焦点转向 GitHub
- 将焦点转向 Bitbucket
- 将焦点转向 GitLab
为什么使用 Git?
- 超过 70% 的开发者使用 Git!
- 开发者可以从世界任何地方协同工作。
- 开发者可以查看项目的完整历史。
- 开发者可以还原到项目的早期版本。
什么是 GitHub?
Git 不同于 GitHub。
GitHub 制作使用 Git 的工具。
GitHub 是世界上最大的源代码托管服务,并自 2018 年起由 Microsoft 拥有。
在本教程中,我们将专注于使用 Git 与 GitHub。
Git 暂存环境
Git 的核心功能之一是暂存环境和提交的概念。
当你工作时,你可能会添加、编辑和删除文件。但无论何时你达到一个重要阶段或完成工作的一部分,都应该将文件添加到暂存环境。
已暂存的文件是准备提交到你正在工作的仓库的文件。不久后,你将更多地了解提交。
目前,我们已完成了对 index.html 的工作。所以我们可以将它添加到暂存环境中:
git add index.html
文件应该已被暂存。让我们检查状态:
git status
在主分支上
尚未提交
待提交的更改:
(使用 "git rm --cached ..." 来取消暂存)
新文件: index.html
现在该文件已被添加到暂存环境。
Git 添加多个文件
你还可以一次暂存多个文件。让我们向我们的工作文件夹添加 2 个文件。再次使用文本编辑器。
一个描述仓库的 README.md 文件(推荐用于所有仓库):
# hello-world
Hello World repository for Git tutorial
This is an example repository for the Git tutorial on https://www.w3schools.com
This repository is built step by step in the tutorial.
一个基本的外部样式表(bluestyle.css):
body {
background-color: lightblue;
}
h1 {
color: navy;
margin-left: 20px;
}
并更新 index.html 以包括样式表:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
</body>
</html>
现在将当前目录中的所有文件添加到暂存环境:
git add --all
使用 --all
而不是单个文件名将会将所有更改(新文件、修改过的文件和已删除的文件)都暂存。
git status
在主分支上
尚未提交
待提交的更改:
(使用 "git rm --cached ..." 来取消暂存)
新文件: README.md
新文件: bluestyle.css
新文件: index.html
现在所有 3 个文件都已添加到暂存环境中,我们准备进行第一次提交。
如何添加新文件到 Git 仓库:从创建本地仓库到添加文件
添加 Git 新文件
你刚刚创建了你的第一个本地 Git 仓库。但它是空的。
所以让我们添加一些文件,或使用你喜欢的文本编辑器创建一个新文件。然后保存或移动它到你刚刚创建的文件夹中。
在这个示例中,我将使用一个简单的 HTML 文件,类似于这样:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
然后将它保存到我们的新文件夹中,命名为 index.html
。
让我们回到终端并列出当前工作目录中的文件:
ls
index.html
ls
会列出目录中的文件。我们可以看到 index.html
存在。
然后我们检查 Git 的状态,看它是否是仓库的一部分:
git status
在主分支上
尚未提交
未跟踪的文件:
(使用 "git add ..." 来将其包含在将要提交的内容中)
index.html
没有添加到提交但未跟踪的文件存在(使用 "git add" 来跟踪)
现在 Git 已经意识到这个文件了,但还没有将它添加到我们的仓库中!
Git 仓库文件夹中的文件可以处于以下 2 种状态之一:
- 已跟踪 - Git 已知道的文件,并已添加到仓库
- 未跟踪 - 存在于你的工作目录中,但尚未添加到仓库
当你首次将文件添加到空仓库时,它们都是未跟踪的。要让 Git 跟踪它们,你需要将它们暂存,或者将它们添加到暂存区。
我们将在下一章中介绍暂存区。
Git 提交
既然我们已经完成了工作,我们准备从暂存转到提交我们的仓库。
添加提交可以跟踪我们的进度和更改。Git 将每个提交视为更改点或“保存点”。如果你发现 bug 或想要做更改,它是项目中可以返回的一个点。
当我们提交时,应该始终包含一条消息。
通过为每个提交添加清晰的消息,对于自己(和其他人)来说,很容易看到发生了什么以及何时发生的。
git commit -m "Hello World 的首次发布!"
[master (root-commit) 221ec6e] Hello World 的首次发布!
3 files changed, 26 insertions(+)
create mode 100644 README.md
create mode 100644 bluestyle.css
create mode 100644 index.html
commit
命令执行提交,-m "message"
添加一条消息。
已暂存环境已被提交,消息是:"Hello World 的首次发布!"
不经过暂存提交
有时,当你进行小的更改时,使用暂存环境似乎是浪费时间。可以直接提交更改,跳过暂存环境。-a
选项会自动将每个已跟踪的更改文件添加到暂存区。
让我们对 index.html
进行小更新:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
</body>
</html>
并检查我们仓库的状态。但这次,我们将使用 --short
选项以更紧凑的方式查看更改:
git status --short
M index.html
注意:短状态标志是:
??
- 未跟踪的文件A
- 已添加到暂存M
- 修改过的文件D
- 已删除的文件
我们看到我们预期的文件已被修改。所以让我们直接提交它:
git commit -a -m "用新行更新了 index.html"
[master 09f4acd] 用新行更新了 index.html
1 file changed, 1 insertion(+)
注意:通常不建议跳过暂存步骤。
跳过暂存步骤有时会导致包含不需要的更改。
Git 提交日志
要查看仓库的提交历史,可以使用 log
命令:
git log
这将显示仓库的提交历史:
commit 09f4acd3f8836b7f6fc44ad9e012f82faf861803 (HEAD -> master)
Author: w3schools-test
Date: Fri Mar 26 09:35:54 2021 +0100
用新行更新了 index.html
commit 221ec6e10aeedbfd02b85264087cd9adc18e4b26
Author: w3schools-test
Date: Fri Mar 26 09:13:07 2021 +0100
Hello World 的首次发布!
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
Git 版本控制系统的完整指南的更多相关文章
- Git版本控制系统VCS
Git版本控制系统VCS 一.版本控制系统基本情况说明 版本控制是一种记录一个或者若干个文件内容的变化,以便将来查阅特定版本修订情况的系统 1.作用 记录文件的所有历史变化 随时可回复到任何一个历史状 ...
- git版本控制系统小白教程(上)
前言:本文主要介绍git版本控制系统的一些基础使用,适合小白入门,因为内容较多,会分为两部分进行分享. Git介绍 Git是目前世界上最先进的分布式版本控制系统.并且它是一个开源的分布式版本控制系 ...
- git版本控制系统小白教程(下)
前言:本文主要介绍git版本控制系统的一些基础使用,适合小白入门,因为内容较多,会分为两部分进行分享,查看上部请点传送门. 删除文件 git删除文件一般有三种情况,第一种是在工作区修改了文件,但是 ...
- Google Code项目代码托管网站上Git版本控制系统使用简明教程
作为一个著名的在线项目代码托管网站,Google Code目前主要支持三种版本控制系统,分别为Git, Mercurial和 Subversion.Subversion即SVN相信大家都已经熟知了,这 ...
- git版本控制系统重新认识
git 版本控制系统 目标:完全搞懂git分布式版本控制系统 搭建git版本控制系统 cvs集中化版本控制系统--集中式管理的服务器 git分布式版本控制系统--会将原始代码仓库镜像下来 新项目使用g ...
- 初识git版本控制系统
当下git分布式版本控制系统越来越火,掌握git也是必须的一个技能.因此,对git做了如下学习. Git初级指南 1. 先安装git.(ps:在select cmponents处要勾选Git Bash ...
- 如何选择版本控制系统 ---为什么选择Git版本控制系统
版本控制系统 "代码"作为软件研发的核心产物,在整个开发周期都在递增,不断合入新需求以及解决bug的新patch,这就需要有一款系统,能够存储.追踪文件的修改历史,记录多个版本的开 ...
- Git版本控制系统之基本使用
最早是通过接触著名的开源社区Github了解到Git的,但一直没有系统学习过.这次下定决心从头到尾系统的学一学,也将学习过程记录于此,供大家批驳.本篇文章先从以下几个方面简单了解一下Git: Git的 ...
- git版本控制系统更新
版本控制系统: 一.概念: 版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 二.版本控制系统分类 1.本地版本控制 ...
- git版本控制系统常见操作总结
简介 Git是强大的版本控制系统,主要功能是针对代码.配置文件等文本进行版本控制.备份等,同时个人认为还是分发代码的一个不错的方式. 常见用法 #创建远程git仓库 [root@test88 ~]# ...
随机推荐
- virtualenvwrapper管理虚拟环境
安装 pip install virtualenvwrapper-win 基本使用 1.创建虚拟环境 mkvirtualenv my_env 使用这个命令,就会在你c盘的当前用户下创建一个Env的文件 ...
- 第120篇: DOM编程(常用操作、动态脚本、样式及动态表格)
好家伙,我回来了, 本篇为<JS高级程序设计>第十四章"DOM编程"学习笔记 1.DOM编程 我们知道DOM是HTML文档的编程接口, 我们可以通过HTML代码实现 ...
- 【Azure 应用服务】Azure Function HTTP Trigger 遇见奇妙的500 Internal Server Error: Failed to forward request to http://169.254.130.x
问题描述 使用 Azure Funciton App,在本地运行完全成功的Python代码,发布到Azure Function就出现了500 Internal Server Error. 而且错误消 ...
- docker使用 mysql8
# docker pull mysql:8 # mkdir -p /mysql/{datadir,etc/mysql} # cat >/mysql/etc/mysql/my.cnf <&l ...
- Taurus.MVC WebMVC 入门开发教程6:路由配置与路由映射
前言: 在本篇 Taurus.MVC WebMVC 入门开发教程的第六篇文章中, 我们将讨论如何配置路由并映射到控制器和操作方法. 路由是决定应用程序如何响应客户端请求的重要组成部分,因此在 Web ...
- 使用C#创建服务端Web API
前言 C# Web API 是一种基于 .NET 平台(包括但不限于.NET Framework 和 .NET Core)构建 HTTP 服务的框架,用于创建 RESTful Web 服务.REST( ...
- windows条件下安装linux双系统
工具: U盘 + rufus(使用烧录进linux镜像) linux镜像 1.windows 管理-压缩卷出一块空闲的磁盘空间(不要使用) 重启电脑 启动项 U盘启动 linux就自动安装,选 ...
- python的替换函数strip(),replace()和re.sub()实例分析
前记: python是一个非常好用的语言,能够帮忙处理很多日常的耗费体力的事情.今天做一个脚本的时候,遇到了python替换的问题,这里就梳理一下知识点吧. 概念: 1.replace() 基本用法: ...
- PXE批量安装操作系统自动化
PXEz自动化 在PXE服务器操作: *yum -y install dhcp xinetd tftp tftp-server* *yum -y install system-config-kicks ...
- opencv-python笔记(1)
openCV笔记 图像 灰度图像 0代表纯黑色,255代表白色(类似亮度) 通道拆分 通过索引拆分: import cv2 lena=cv2.imread("lenacolor.png& ...