Git教程 - 全面的初学者指南

Git是最广泛使用的DevOps工具之一,用于处理各种规模的合作项目。这个版本控制系统使你能够保持对项目历史的关注。它还允许团队成员高效地在同一个项目的不同部分工作。
然而,如果你是Git的新手,处理各种Git命令可能是一种挑战。
本教程将介绍Git的基础知识、常用命令,以及在本地机器和远程仓库的工作流程。我们还将讨论Git的好处和坏处。
下载完整的Git小抄
- 什么是Git,它是如何工作的?
- 为什么使用Git?
- 使用Git的好处
- 使用Git的缺点
- 如何在Linux、Mac和Windows上安装Git
- 在Linux上安装Git
- 在Mac上安装Git
- 在 Windows 上安装 Git
- 如何使用Git命令
- 在本地仓库中使用 Git
- 使用 Git 分支
- 管理远程 Git 仓库
什么是Git,它是如何工作的?
全球信息跟踪器(Git)是一个开源的版本控制系统(VCS),用于跟踪任何文件集的变化。它最初是为Linux内核开发而设计和开发的,但现在被广泛用于协调合作项目的工作,如软件开发。
Git使用户可以进行非线性开发。一个Git项目的数据库存储在GitHub或GitLab等平台上托管的远程仓库中,允许多人同时在同一个项目的不同部分工作。这使得数据的完整性和开发速度得到提高。
有两种类型的版本控制系统--集中式和分布式。
集中式版本控制系统的用户必须连接到主仓库才能进行任何修改,因为它存储了项目的所有文件。如果主仓库出现问题,用户将无法对分支进行任何修改。
同时,Git是一个分布式的版本控制系统,所以它不依赖于它的主仓库,因为所有的客户端都完全镜像它的内容。用户可以将主仓库克隆到他们的本地机器上,并离线修改文件,从而使工作流程更加灵活。
下面是一些最常用的Git术语,按字母顺序排列,你必须了解Git工作流程的基本知识。
- 分支- Git将主分支作为其默认分支。创建一个新的 Git 分支意味着从主分支中创建一个新的独立开发线,比如开发一个新的功能。了解如何重命名一个 Git 分支。
- 签出- 选择你要应用你的改动的开发线。签出一个分支将使 Git 在该分支上记录新的提交。
- Clone- 创建一个现有仓库的本地副本。
- 提交- 保存你所做的修改。提交命令也指提交时你的仓库的快照。
- Git 仓库- 也被称为repo,是一个项目中的**.git**文件夹,所有的提交都在这里。它跟踪并保存所有对 Git 项目文件的修改。注意,仓库中的文件是 Git 识别的文件。
- HEAD- 一个指针,指的是当前签出的分支中的最后一条提交命令。可以把它看作是当前分支。
- Local repository- 存储在你电脑中的仓库副本。
- Pull- 将远程版本库中的修改复制到本地机器上。
- 推送- 将本地机器上的更改复制到远程版本库。
- Staging area- 也叫索引,是用户为下一次提交整理文件的地方。它通知 Git 当前提交和下一次提交之间会有什么变化。
- URL- Git 仓库的位置。
- 工作目录- 也叫工作区或工作树,它指的是在提交到暂存区之前测试你的修改。它位于你的本地目录中,是 Git 的非跟踪区域。
Git的基本工作流程有三个阶段。
- 首先,从工作目录中的主分支创建一个特性分支,在那里开发你的特性。每当你对文件做任何改动,比如添加、删除或重命名,都要回到这个阶段。
- 完成后,通过合并特性分支和暂存分支,将文件添加到暂存区域。这样做有助于审查和组织你要提交的文件,使项目版本易于理解。
- 一旦开发工作达到一个里程碑,通过将暂存分支与主分支合并,将本地修改永久性地提交到 Git 仓库主库。它储存了项目版本的所有快照。
请注意,Git 并不跟踪每一个修改过的文件,因为它只在文件存在于暂存区域时才将其纳入你的提交。
如果您需要提交两个不同的修改文件,请将第一个文件添加到暂存区域,然后执行提交命令。一旦你完成了第一次提交,重复这些步骤来做第二次提交。
为什么使用 Git?
让我们来看看使用 Git 来管理项目的好处和坏处。
使用 Git 的优点
- 开源- 它是免费使用的。你可以下载它的源代码并根据自己的需要进行修改。此外,网上有许多资源可以用来学习Git的最佳实践。
- 快速和轻量级- Git 的核心部分和大部分操作都是在本地编写和执行的,这使得它比集中式版本控制系统更快。
- 适度的硬件功率- Git 不需要强大的硬件,因为团队成员只需要在推送或拉动修改到主 repo 时与服务器互动。这也有利于成长中的团队,因为无论有多少人使用它,Git都不会提示进一步的硬件要求。
- 安全的环境- 它使用SHA1,一种加密的哈希函数,来识别其数据库中的对象。它在签出操作中检查每一个文件和提交,所以不可能在没有Git存储的情况下改变数据库中的数据。
- 更安全的备份- Git 会为你的数据创建多个副本,因为它将仓库镜像到所有客户端,允许更多备份。此外,Git 可以进行快照,这是文件系统的代表,使你可以回滚到快照时的状态。在发生故障时,这可能是一个有用的恢复方案。
- 分支更容易- 创建、删除和合并分支只需要几秒钟,这使得它比集中式版本控制系统更省时、更省力。
使用Git的缺点
- 陡峭的学习曲线- 操作Git包括部署各种命令行。可能需要花点时间来学习Git术语和它的工作原理。
- 二进制文件处理不佳- Git 在处理二进制文件(如图像)时速度会变慢。
- 有可能在错误的区域工作- 这可能是由于多种原因造成的,比如忘记事先执行签出命令,或者把你的 repo 留在一个分支而不是主分支。
- 没有内置的访问控制 - 用户通常使用SSH 密钥来限制对 Git 服务器的访问。不过,像GitHub和GitLab这样广为人知的平台都有自己的权限机制。
如何在 Linux、Mac 和 Windows 上安装 Git
要开始使用 Git,首先要在本地机器上安装它,或者检查你的电脑上是否已经安装了它。
在 Linux 上安装 Git
如果你使用的是 Linux,你需要执行两项任务 - 在电脑上安装和配置 Git。
还需要注意一些先决条件,比如以root身份或以具有sudo权限的用户身份登录Linux。
在 Mac 上安装 Git
有几种方法可以在Mac上安装Git。
首先,使用下面的命令检查你的机器是否已经预装了 Git。
git --version
如果你的Mac上没有安装Git,终端会显示这个信息。
点击安装,下载并安装XCode。这是一个为苹果操作系统开发软件的环境,它也可以处理 Git。只要按照提示操作,你就能得到工作版的Git。
在macOS上安装Git的第二个方法是使用macOS的独立安装程序。然而,一些用户报告说,这个安装程序与macOS X Snow Leopard和Lion(OSX 10.6和10.7)有兼容性问题。如果你的Mac运行在这两个版本上,我们建议使用XCode或遵循第三种安装方法 -Homebrew。
Homebrew是一个软件管理系统,可以让你安装Git等命令行工具。在终端输入这个命令来安装它。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
一旦你安装了Homebrew,请继续执行这些步骤。
- 启动终端并输入**-brew install git**。
- 安装应该开始了。一旦完成,通过运行git -version命令检查安装是否成功。
- 使用git config命令来配置你的 Git 用户名和电子邮件,用你自己的用户名和example@mysite.com替换。你创建的任何新提交都将与这些细节相关联。
git config --global user.name "myusername"
git config --global user.email "example@mysite.com"
在Windows上安装Git
要在 Windows 上安装 Git,可以使用其独立的安装程序。以下是安装方法。
- 下载最新版本的Git for Windows 安装程序。
- 启动安装程序。一旦打开 Git 安装向导屏幕,按照提示完成安装。我们推荐使用默认选项,因为它们足以方便用户的一般需求。
- 打开命令提示符。输入git config命令,用你自己的用户名和邮箱替换myusername和example@mysite.com来配置你的 Git 用户名和邮箱。现在,你创建的任何新提交都将与他们相关联。
git config --global user.name "myusername" $ git config --global user.email "example@mysite.com"
专业提示
安装Git 凭证管理器来帮助你记住你的 Git 凭证。
如何使用 Git 命令
在 Git 中运行命令有多种方式,从使用命令行工具(如 macOS 的终端或 Windows 的命令提示符)到图形用户界面(GUI)。
本节将介绍你需要知道的各种Git 命令,以充分利用 Git 的命令行工具。
在本地仓库中使用 Git
如前所述,使用 Git 的第一阶段是在一个工作目录中开发项目。这个工作树位于你的本地 Git 仓库中 -- 存在于你电脑中的主仓库副本。
本节将讨论在本地使用 Git 的最重要命令。即使没有互联网连接,你也可以通过以下命令创建一个新的 Git 仓库并修改你的仓库。
git init
创建新仓库的第一步是运行git init命令。这样做会创建一个空的 Git 仓库。它在你的工作树中的**.git**文件夹中设置了一个新目录,其中包含了必要的 Git 元数据。
你也可以用git init命令把一个已有的项目转化为Git仓库。注意,你只需要在一个新项目开始时运行一次这个命令。
导航到你的项目文件夹,并在你的命令行工具中输入以下命令。
git init
你也可以指定你想初始化新仓库的目录。使用这个语法来做。
git init <folder>
例如,对于demo-project文件夹下的新版本库,语法应该是这样的。
git init demo-project
该命令将在demo-project文件夹下创建一个**.git**文件夹,而不是你当前的工作树。
git add
git add命令将工作目录中的新文件或修改的文件添加到暂存区,也叫索引。
Git 没有一个简单的保存功能。相反,它使用一个叫做提交的过程。向 Git 仓库提交修改的第一步是运行git add命令,选择你要提交的文件。
这个命令会把这些选定的文件移到暂存区。在那里,你可以使用另一条 Git 命令 -git commit- 将这些文件的本地修改记录到 Git 仓库中。
使用git add 的方法有几种,包括。
- git add .- 添加仓库中所有未缓存的文件。
- git add *.txt- 添加仓库中所有的**.txt**文件。
- git add <文件名> - 添加一个特定的文件。
- git add - 添加一个特定的文件目录。
下面是一个应用git add命令的例子。
git add index.html
这个命令行将添加一个index.html文件到暂存区。
git status
git status命令显示工作目录和暂存区的当前状态。
该命令将检查哪些本地修改已经被暂存或提交,哪些还没有。如果没有新的本地修改,它将显示一条信息,表明没有什么可提交的,工作树是干净的。
这对新的Git用户来说也很有帮助,因为信息中会提示在特定情况下该怎么做。
假设在你的本地仓库里有一些未被跟踪的文件没有被暂存或提交。对此,这个命令会显示未跟踪的文件列表,你可以跟进,把它们移到暂存区。
此外,这个命令还可以显示你是否有合并冲突,以及哪些文件导致了这个问题。
git rm -cached
git rm -cached命令从索引中删除一个文件,但它会在工作目录中保持原样。如果你打算在将来把它加回你的 Git repo,这很有用。
使用git rm -cached命令清除缓存有两种方法,取决于你是只想删除特定的文件还是想清除整个目录。
如果你想从索引中删除一个特定的文件,在命令后面指定文件名。在这个例子中,我们将删除一个名为file.conf的文件。
git rm --cached file.conf
如果你想从索引中删除整个目录,使用以下命令。
$ git rm -r --cached <directory name>
.gitignore
在提交一组修改时,可能有一些文件是你不想包括的,比如私人配置和隐藏的系统文件。Git没有忽略命令,但你可以用一个**.gitignore**文件来完成这项任务。
.gitignore文件是一个文本文件,用于指定Git在工作树中应该忽略哪些文件和文件夹。它通常存在于一个项目的根目录下。
有各种类型的文件应该被忽略,它们通常是机器生成的文件或构建的工件。最常见的例子包括。
- 隐藏的系统文件,如**.DS_Store和Thumbs.db**
- 运行时产生的文件,如**.log和.temp**
- 依赖性缓存,如**/node_modules和/packages**的内容
- 个人 IDE 配置文件,如**.idea/workspace.xml**
- 构建输出目录,如**/bin**、/out和**/target**
要创建一个**.gitignore文件,使用任何文本编辑器(如Windows中的记事本)创建一个纯文本文件,并将其命名为.gitignore**。根据需要添加目标文件。
下面是一个**.gitignore**文件的例子。
filename.txt
directory/
*.html
*~
上面的列表显示了在**.gitignore**中列出一个文件的各种模式。
- 字面文件名- 忽略一个特定的文件名,比如filename.txt。
- 目录--通过在目录名的末尾添加斜线符号(/)来忽略整个目录,例如,目录/。
- 通配符- 忽略任何以特定扩展名结尾的文件,方法是在扩展名前加一个星号(*),例如***.html**。此外,*~会提示 Git 忽略任何以 ~ 结尾的文件,例如index.html~。
你也可以通过使用**!前缀来指定某些文件从.gitignore**列表中排除。
例如,你不想让Git忽略example.html,尽管其他所有以**.html为扩展名的文件都被忽略了。在这种情况下,把它加入你的.gitignore**列表。
*.html
!example.html
记住,不可能排除被忽略目录下的文件。
例如,你不能从一个被忽略的路径directory/中排除directory/example.log。如果你在**.gitignore文件中加入!directory/example.log**,Git 仍然会忽略directory/example.log,因为整个目录都被忽略了。
git commit
git commit命令在一个特定的时间为你的仓库的内容创建一个快照。
它记录了对你的仓库中的文件所做的修改。除此之外,提交还可以作为项目的综合记录,向您展示项目的发展过程。
每个提交都有一个唯一的提交ID,以便于参考。当你需要撤销某项修改时,提交ID也有助于参考某个特定的提交。
这个命令是保存对版本库所做修改的第二步。这个过程从git add命令开始,用来存放任何你想包含在提交中的新改动。然后,git commit将这些改动创建一个提交到版本库。git add命令在您执行git commit 之前不会影响任何东西。
一旦你的本地分支的代码准备好了,就用git push提交到远程仓库。这使得不同的团队成员可以在他们的本地仓库提交代码,并在稍后当代码完全准备好时推送到主仓库。
git commit的用法有多种选项,最常见的选项如下。
- git commit- 提交阶段性修改的主要命令。它将启动一个文本编辑器,提示您提交一条提交信息,简要描述您所做的修改。
- git commit -m "message" - 创建一个带有内联消息的提交。可以使用任何信息,但要确保它简明扼要,让其他团队成员能够理解。
- git commit -a- 创建一个包括工作目录中所有修改的提交。这条命令只包括对跟踪的文件的修改,这些文件是用git add命令添加的。
- git commit -am "message" - 结合了**-a和-m**选项的功能,它将创建一个包括所有阶段性修改的提交,并包含一个内联注释。
- git commit -amend - 允许对最后一次提交进行修改,比如在不改变快照的情况下编辑最后的提交信息。
例如,您刚刚修改了一个主页的风格,并将css/styles.css文件移到了暂存区。现在你可以继续执行git提交,并在那里放上一条提交信息,以帮助大家理解这个改动。
git commit -m "Change the styling on homepage"
专业提示
在写提交信息时,许多开发者使用现在时,使注释看起来像行动。这有助于使任何改写操作更加直观。
git log
git log命令显示了一个仓库的提交历史。默认情况下,它的输出包括提交ID、消息和其他元数据。它有助于浏览你不断增长的项目历史。
git log和git status的区别在于,git status适用于当前目录,而git log适用于版本库历史。
假设你想看看所有或新的提交已经被推送到你的团队的仓库的列表。使用下面的命令就可以做到这一点。
git log
Git 会返回一个类似于下面这个例子的列表。
这个输出显示了仓库中的最新日志信息。下面是这个例子的具体内容。
- commit ID- 一串随机的数字和字母。
- 作者 - 在这个例子中,是 "Test"。它还显示了作者的电子邮件。
- 日期 - 指定确切的日期和时间。
- 提交信息- 在这个例子中,它是 "hello file added "和 "new file"。
也可以通过添加各种标志来过滤输出。有多个选项可以过滤你的日志。看看下面的例子,看看git日志过滤器的应用。
git log -n 5
-n标志帮助你看到一些最近的日志。例如,这里的git log命令将返回一个仓库中最近的五个提交的列表。
git log --author="Jane Doe"
author 标志按照写改动的人过滤提交。上面的例子将返回一个由无名氏修改的提交的列表。
在大型项目中,有时创建提交的人并不是将其推送到主仓库的人。这就是为什么 Git 还提供了一个选项,可以通过提交者的名字来过滤日志,使用提交者标志。
git log --committer="John Doe"
在这个例子中,该命令将显示由 John Doe 提交的提交。
git log --committer="John Doe"
-before和**-after标志按日期过滤git log**的结果。这两个标志都可以接受多种日期格式,但最常用的是完整日期和相对值。上面的git log命令例子将检索2021年10月28日之后的提交列表。
git log --before="yesterday"
相对值的一个例子是昨天。上面的git log命令将检索前一天的提交列表。
git log --after="2021-10-28" --before="2022-02-23"
结合**-before和-after**标志来过滤特定时间范围内的提交也是可行的。上面的例子将检索到2021年10月28日到2022年2月23日发布的提交列表。
git log -- index.html
当你只想看到影响某个特定文件的提交列表时,上面的git log命令很有用。在这个例子中,该命令将提示Git显示对你的代码中的index.html文件的修改。
git log -S"# Hello"
-S标志使您能够搜索涉及某一行代码的所有提交变化。在上面的例子中,命令行会搜索在你的代码中添加或删除了**# Hello**这个术语的提交。
git log a12bcd3..a45b67c
要根据特定的提交范围过滤日志,可以使用**git log ...**命令。上面的例子将返回推送提交 "a12bcd3 "和提交 "a45b67c "之间的提交列表。
git log --grep="feat:"
-grep标志允许你根据提交信息来过滤日志。上面这条命令将检索出所有注释以**feat:**开头的提交的列表。
使用 Git 分支的工作
Git 版本控制系统的一个基本功能是分支。Git 分支可以让你离开主代码库,在不影响原始主代码或其他分支的情况下对其进行修改。换句话说,它允许开发者在独立的开发线上并行工作。
例如,在一个网站项目中,你可以做一个新的功能,而另一个开发人员正在修复一个错误。你们两个人都会创建一个新的分支,并开始在这些各自的分支上工作。
如果你需要立即对网站进行修改,你可以切换到主分支,进行修改,并将其推送上线。之后,你可以切换回新功能分支工作,完成后再将其合并到主分支。
如果另一个开发者在不同的时间完成了他的任务,这也不会影响到其他人。所有这些修改都会安全地保存在每个分支中,只有在推送到主分支时才会影响到主代码库。
请看下面的图示,以更好地理解 Git 分支的工作原理。
分支也有助于减少不稳定的代码被合并到主分支的可能性,因为开发者只会在他们准备好之后才把他们的代码推到主分支。
你也可以要求开发者先创建一个拉取请求(pull request),这是一个将修改推送到主分支的建议。提出拉取请求可以让其他开发者先审阅该代码,确保它已经准备好被合并到主干分支中。
专业提示
用一个中性的名字来命名默认分支,比如main。多年来,Git 仓库中的默认分支通常被命名为 master。然而,随着软件行业向包容性发展,这种命名方式可能很快就会被抛弃。
git 分支
git branch命令用于创建、重命名和删除分支。它还可以检索本地和远程分支的列表。
该命令通常与git checkout和git merge一起使用,用于切换分支和合并不同的代码版本。
让我们从创建一个分支开始。在这个例子中,我们将创建一个名为v2.0 的新分支。用这个语法来做。
git branch v2.0
一旦你运行这个命令,你的开发环境将保持与版本库的 HEAD 相连。如果你想看到这个新的分支,你需要使用git checkout命令。
注意,当你创建一个新的分支时,仓库的历史会保持不变,因为 Git 只创建一个指向该新分支的指针。
接下来,如果你想重命名你的分支,你可以对当前查看的分支使用**-m标志。例如,你想把v2.0分支改名为v.2.0.1**。你必须打开v2.0分支,并应用这段代码。
git branch -m v.2.0.1
要删除版本库中的一个分支,使用**-d标志。比方说,你想删除v.2.0.1**分支。下面的命令就是这样做的。
git branch -d v.2.0.1
如果你运行git branch -d命令,而这个分支上的修改还没有被合并到另一个分支,那么 Git 不会删除这个分支。这条命令有助于确保你不会意外地丢失任何改动。
如果你故意决定永久删除一个分支,即使它有未被合并到任何地方的改动,也请使用**-D标志。下面是一个强制删除名为v.2.0.1** 的分支的例子。
git branch -d v.2.0.1
带有**-D**标志的命令在执行时不会显示任何警告,所以请记住只有在确定要删除该分支时才使用它。
最后,如果你想检索一个 Git 仓库中的分支列表,可以运行这个语法。
git branch
下面是这个命令的输出示例。
* main
* v.2.0.1
* v.1
另外,你也可以使用git branch -list 命令,它将从你的 repo 中返回同样的列表。
此外,你还可以创建标签,给你的仓库历史中的特定点以参考。
一个Git标签通常用来标记一个发布版本。例如,每当开发人员准备推出新的项目版本时,他们会创建标签以方便识别。
标签就像不会改变的分支--一旦它们被创建,就没有进一步的提交历史。
使用下面的语法来创建一个新的 Git 标签。
git tag <tagname>
版本控制中常见的标签名称模式是使用版本号,例如v1.0。
git checkout
要开始修改一个分支,你需要切换到它。这里你要用git checkout命令在不同的分支之间切换。
一旦你签出了一个分支,你的工作目录就会被改变。例如,你在v.1分支上,你想移到v.2分支。要做到这一点,应用这个命令。
git checkout v.2
现在你的当前目录是分支v.2。
如果你不确定你目前在哪个分支,使用下面的命令来找出。
git branch --show-current
另外,你也可以用这个语法来查看你当前所在的分支。
git rev-parse --abbrev-ref HEAD
git checkout命令也可以创建一个新的分支。通常,你需要先运行git branch命令来创建一个新的分支,然后再运行git checkout命令来检查它。不过,下图所示的命令提供了一个更方便的方法。
git checkout -b beta-v.3
该命令同时创建了一个名为beta-v.3的新分支,并将其检出,让你可以立即切换到它。
注意,用git checkout -b命令创建的分支,默认是基于当前的HEAD 。
git merge
git merge命令将一个独立的开发行与另一个开发行结合起来,将它们整合成一个分支。
例如,当开发者将暂存分支中的修改与主分支合并时,该命令会将分叉的仓库历史重新组合成一个统一的项目历史。
注意,当你将目标分支合并到主分支时,只有主分支会被更新以反映合并,而目标分支则保持不变。
要执行这条命令,请确保你在主分支中。如果你还不在那里,通过运行git checkout命令移到主分支。如果你想合并的分支是demo-project,合并命令应该是这样的。
git merge demo-project
如果您要合并的两个分支都修改了同一个文件的相同部分,Git 将无法确定使用哪个版本,因此会触发合并冲突。
要解决这个问题,可以运行git status命令,找出哪些文件需要进行故障处理。
管理远程 Git 仓库
现在你已经学会了如何浏览本地仓库,现在是时候学习管理远程 Git 仓库了。远程仓库允许你使用GitHub、BitBucket 或 GitLab 等代码托管平台与其他人在一个 Git 项目上进行协作。
远程仓库通常托管在一个远程服务器上。因此,与本地仓库不同,你需要互联网连接来访问远程仓库。
一旦你把本地修改从本地仓库推送到远程仓库,你的修改对其他有访问权限的团队成员来说是可见的。他们可以把你的修改从远程版本库拉到他们的本地版本库,并把这些修改整合到他们的工作区。当其他人把他们的本地修改推送到远程仓库时,你也可以这么做。
有关远程仓库的 Git 工作流程,请看下面的路线图。
本教程的最后一节将解释管理远程仓库时使用的命令。
git remote
git remote命令允许你创建、查看和删除与远程仓库的连接。
下面是几个使用git remote命令的例子。
如果你想查看你的git远程配置,运行这个语法。
git remote
这个命令将返回你与其他仓库的远程连接的列表。
要添加一个新的远程仓库连接,使用下面这个命令。
git remote add <name> <url>
例如,如果你想添加一个名为new-remote的远程仓库,其URL是https:/github.com/user/new-remote.git。语法将是这样的。
git remote add new-remote https:/github.com/user/new-remote.git
一旦你添加了它,你就可以在其他 Git 命令中使用new-remote作为https:/github.com/user/new-remote.git的快捷方式。
如果你想重命名一个远程连接,请使用这个命令。
git remote rename <old-name> <new-name>
同时,当你发现一个远程仓库已经过时了,你可以用这个命令来删除与它的连接。
git remote rm <name>
git push
git push命令将本地仓库的提交传输到远程仓库。
在你开始推送提交之前,用这个命令检查命令行是否指向预定的仓库。
git remote -v
如果它没有指向正确的地址,用这个命令改变地址。
git remote set-url <remote repo name> <remote repo address>
一旦它指向正确的地址,运行这个命令。
git push <remote name> <branch name>
例如,如果远程仓库名称是origin,分支名称是main,语法应该是这样的。
git push origin main
这条命令将发送本地提交到远程仓库的主分支。
git pull
git pull命令检索并下载远程仓库的内容到你的本地机器。下面是这样做的语法。
git pull <remote repository name>
例如,要检索主分支的内容,使用此命令。
git pull main
如果你只想从一个特定的分支中提取代码,使用这个语法。
git checkout <branch name>
git pull <remote name>
假设你想处理一个名为demo-v1的分支的代码,而远程仓库的名称是main。该命令将如下。
git checkout demo-v1
git pull main
git checkout命令会把你移到你想拉的代码的分支。然后,git pull命令将检索到代码。
有时人们会对git pull和git fetch命令之间的区别感到困惑。简而言之,两者都是用来检索远程仓库的内容,但前者只下载数据,而后者则下载数据并将其整合到工作文件中。
从这里可以看出,git pull操作实际上是git fetch和git merge命令的结合。
git clone
git clone命令创建一个远程仓库的本地副本。开发人员用这个命令来获取一个现有仓库的副本,以便在本地机器上开发,而不影响主代码库。
这也是 Git 中建立仓库的两种方式之一 -- 使用git init命令创建一个新的 Git 仓库,或者使用git clone命令克隆一个现有的仓库。
与git init命令一样,git clone命令通常只执行一次。通过克隆,你会拥有所有的元数据、Git 分支和完整的仓库历史。
使用该命令可以克隆一个远程仓库。
git clone <remote URL>
假设你想克隆一个 GitHub 仓库,并立即开始编辑它。运行这些命令就可以做到这一点。
git clone https:/github.com/user/new-remote.git
cd new-remote
在这个例子中,Git 会创建一个名为new-remote 的新目录。然后,cd命令会把你移到这个新目录,在那里你可以开始查看和编辑文件。
除了使用Git的本地协议,你还可以通过HTTPS或SSH协议进行克隆。
各个Git平台的步骤略有不同,但命令是相似的。
以下是通过 GitHub 克隆一个仓库的步骤。
- 打开你想克隆的仓库的主页。
- 点击文件列表上方的代码按钮。
- 复制HTTPS 克隆部分的代码,使用 HTTPS 克隆仓库。要使用 SSH 密钥克隆仓库,请点击使用 SSH并复制代码,包括由你的组织的 SSH 证书机构颁发的证书。
- 打开Git Bash。
- 移动到你想要克隆的副本所在的目录。
- 使用此命令通过 HTTPS 克隆。URL就是你之前复制的那个。
- 打开你想克隆的版本库的主页。
- 点击文件列表上方的代码按钮。
- 复制使用 HTTPS 克隆部分的代码,使用 HTTPS 克隆版本库。要使用 SSH 密钥克隆仓库,请点击使用 SSH并复制代码,包括由你的组织的 SSH 证书机构颁发的证书。
- 打开Git Bash。
- 移动到你希望克隆的副本所在的目录。
- 使用此命令通过 HTTPS 克隆。URL就是你之前复制的那个。
$ git clone https://github.com/yourusername/yourrepository
或者用这个命令通过 SSH 克隆。
$ git clone ssh://github.com/yourusername/yourrepository
- 点击回车。就是这样,你已经成功地创建了一个本地克隆
如果你使用Bitbucket,以下是操作步骤。
- 打开你想克隆的版本库。
- 在全局侧边栏点击**+,选择克隆这个版本**。
- 复制克隆命令,无论是HTTPS还是SSH格式。请记住,如果你使用SSH,请确保你在Bitbucket里有公钥,并且加载在你想存储克隆的本地系统上。
- 使用终端,移动到你想克隆版本库的本地目录。
- 粘贴你在第三步中复制的命令。
如果你使用的是HTTPS,该命令将是。
$ git clone https://username@bitbucket.org/yourusername/yourrepository
如果是SSH,使用这个命令。
$ git clone ssh://git@bitbucket.org:yourusername/yourrepository
一个成功的克隆命令将出现在你本地驱动器上的一个新的子目录中,在你的目标目录内。它的名字将与你克隆的版本库相同。
总结
Git 可以帮助你管理你的项目,并轻松监控项目历史。它使你能够创建一个新的项目,复制一个现有的仓库,创建一个新的功能,并与你的团队一起工作。除此之外,它还为你的开发项目提供了一个轻量级、安全的工作环境。
然而,对于初学者来说,学习Git可能是令人生畏的,因为它的操作涉及大量的命令。要了解Git的多个开发区域--从本地仓库到远程仓库--也需要一些时间,但一旦你更好地掌握了它,你就能更有效地驾驭你的开发项目。我们希望本教程提供了一个学习Git基础知识的有用方法。如果你想了解更多关于使用Git来提高你的生产力,可以尝试使用git钩子来自动化你的工作流程。。









