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

211 阅读12分钟

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

Git Tutorial – A Comprehensive Beginner’s Guide

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项目的数据库存储在GitHubGitLab等平台上托管的远程仓库中,允许多人同时在同一个项目的不同部分工作。这使得数据的完整性和开发速度得到提高。

有两种类型的版本控制系统--集中式分布式

集中式版本控制系统的用户必须连接到主仓库才能进行任何修改,因为它存储了项目的所有文件。如果主仓库出现问题,用户将无法对分支进行任何修改。

同时,Git是一个分布式的版本控制系统,所以它不依赖于它的主仓库,因为所有的客户端都完全镜像它的内容。用户可以将主仓库克隆到他们的本地机器上,并离线修改文件,从而使工作流程更加灵活。

下面是一些最常用的Git术语,按字母顺序排列,你必须了解Git工作流程的基本知识。

  • 分支- Git将主分支作为其默认分支。创建一个新的 Git 分支意味着从主分支中创建一个新的独立开发线,比如开发一个新的功能。了解如何重命名一个 Git 分支
  • 签出- 选择你要应用你的改动的开发线。签出一个分支将使 Git 在该分支上记录新的提交。
  • Clone- 创建一个现有仓库的本地副本。
  • 提交- 保存你所做的修改。提交命令也指提交时你的仓库的快照。
  • Git 仓库- 也被称为repo,是一个项目中的**.git**文件夹,所有的提交都在这里。它跟踪并保存所有对 Git 项目文件的修改。注意,仓库中的文件是 Git 识别的文件。
  • HEAD- 一个指针,指的是当前签出的分支中的最后一条提交命令。可以把它看作是当前分支。
  • Local repository- 存储在你电脑中的仓库副本。
  • Pull- 将远程版本库中的修改复制到本地机器上。
  • 推送- 将本地机器上的更改复制到远程版本库。
  • Staging area- 也叫索引,是用户为下一次提交整理文件的地方。它通知 Git 当前提交和下一次提交之间会有什么变化。
  • URL- Git 仓库的位置。
  • 工作目录- 也叫工作区工作树,它指的是在提交到暂存区之前测试你的修改。它位于你的本地目录中,是 Git 的非跟踪区域。

The three stages of the basic workflow in Git, consisting of working directory, staging area, and finally Git repository

Git的基本工作流程有三个阶段。

  1. 首先,从工作目录中的主分支创建一个特性分支,在那里开发你的特性。每当你对文件做任何改动,比如添加、删除或重命名,都要回到这个阶段。
  2. 完成后,通过合并特性分支和暂存分支,将文件添加到暂存区域。这样做有助于审查和组织你要提交的文件,使项目版本易于理解。
  3. 一旦开发工作达到一个里程碑,通过将暂存分支与主分支合并,将本地修改永久性地提交到 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,终端会显示这个信息。

The message the terminal will show if you don't have Git installed on your Mac

点击安装,下载并安装XCode。这是一个为苹果操作系统开发软件的环境,它也可以处理 Git。只要按照提示操作,你就能得到工作版的Git。

在macOS上安装Git的第二个方法是使用macOS的独立安装程序。然而,一些用户报告说,这个安装程序与macOS X Snow Leopard和Lion(OSX 10.6和10.7)有兼容性问题。如果你的Mac运行在这两个版本上,我们建议使用XCode或遵循第三种安装方法 -Homebrew

Homebrew homepage with install option

Homebrew是一个软件管理系统,可以让你安装Git等命令行工具。在终端输入这个命令来安装它。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

一旦你安装了Homebrew,请继续执行这些步骤。

  1. 启动终端并输入**-brew install git**。
  2. 安装应该开始了。一旦完成,通过运行git -version命令检查安装是否成功。
  3. 使用git config命令来配置你的 Git 用户名和电子邮件,用你自己的用户名example@mysite.com替换。你创建的任何新提交都将与这些细节相关联。
git config --global user.name "myusername"
git config --global user.email "example@mysite.com"

在Windows上安装Git

要在 Windows 上安装 Git,可以使用其独立的安装程序。以下是安装方法。

  1. 下载最新版本的Git for Windows 安装程序
  2. 启动安装程序。一旦打开 Git 安装向导屏幕,按照提示完成安装。我们推荐使用默认选项,因为它们足以方便用户的一般需求。

Git 235.12 setup page with list of components to install

  1. 打开命令提示符。输入git config命令,用你自己的用户名和邮箱替换myusernameexample@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 status message that indicates there's nothing to commit and the working tree is clean.

这对新的Git用户来说也很有帮助,因为信息中会提示在特定情况下该怎么做。

假设在你的本地仓库里有一些未被跟踪的文件没有被暂存或提交。对此,这个命令会显示未跟踪的文件列表,你可以跟进,把它们移到暂存区。

Screenshot of the command that will show the list of the untracked files.

此外,这个命令还可以显示你是否有合并冲突,以及哪些文件导致了这个问题。

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_StoreThumbs.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 loggit status的区别在于,git status适用于当前目录,而git log适用于版本库历史。

假设你想看看所有或新的提交已经被推送到你的团队的仓库的列表。使用下面的命令就可以做到这一点。

git log

Git 会返回一个类似于下面这个例子的列表。

The output showing the latest log information in the repository.

这个输出显示了仓库中的最新日志信息。下面是这个例子的具体内容。

  • 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 分支的工作原理。

How git branches work.

分支也有助于减少不稳定的代码被合并到主分支的可能性,因为开发者只会在他们准备好之后才把他们的代码推到主分支。

你也可以要求开发者先创建一个拉取请求(pull request),这是一个将修改推送到主分支的建议。提出拉取请求可以让其他开发者先审阅该代码,确保它已经准备好被合并到主干分支中。

专业提示

用一个中性的名字来命名默认分支,比如main。多年来,Git 仓库中的默认分支通常被命名为 master。然而,随着软件行业向包容性发展,这种命名方式可能很快就会被抛弃。

git 分支

git branch命令用于创建、重命名和删除分支。它还可以检索本地和远程分支的列表。

该命令通常与git checkoutgit 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

The syntax which shows the current branch you're on

另外,你也可以用这个语法来查看你当前所在的分支。

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 工作流程,请看下面的路线图。

The roadmap workflow when managing a remote Git repository.

本教程的最后一节将解释管理远程仓库时使用的命令。

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 pullgit fetch命令之间的区别感到困惑。简而言之,两者都是用来检索远程仓库的内容,但前者只下载数据,而后者则下载数据并将其整合到工作文件中。

从这里可以看出,git pull操作实际上是git fetchgit 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 克隆一个仓库的步骤。

  1. 打开你想克隆的仓库的主页。
  2. 点击文件列表上方的代码按钮。
  3. 复制HTTPS 克隆部分的代码,使用 HTTPS 克隆仓库。要使用 SSH 密钥克隆仓库,请点击使用 SSH并复制代码,包括由你的组织的 SSH 证书机构颁发的证书。
  4. 打开Git Bash
  5. 移动到你想要克隆的副本所在的目录。
  6. 使用此命令通过 HTTPS 克隆。URL就是你之前复制的那个。
  7. 打开你想克隆的版本库的主页。
  8. 点击文件列表上方的代码按钮。
  9. 复制使用 HTTPS 克隆部分的代码,使用 HTTPS 克隆版本库。要使用 SSH 密钥克隆仓库,请点击使用 SSH并复制代码,包括由你的组织的 SSH 证书机构颁发的证书。
  10. 打开Git Bash
  11. 移动到你希望克隆的副本所在的目录。
  12. 使用此命令通过 HTTPS 克隆。URL就是你之前复制的那个。
$ git clone https://github.com/yourusername/yourrepository

或者用这个命令通过 SSH 克隆。

$ git clone ssh://github.com/yourusername/yourrepository
  1. 点击回车。就是这样,你已经成功地创建了一个本地克隆

如果你使用Bitbucket,以下是操作步骤。

  1. 打开你想克隆的版本库。
  2. 在全局侧边栏点击**+,选择克隆这个版本**。
  3. 复制克隆命令,无论是HTTPS还是SSH格式。请记住,如果你使用SSH,请确保你在Bitbucket里有公钥,并且加载在你想存储克隆的本地系统上。
  4. 使用终端,移动到你想克隆版本库的本地目录。
  5. 粘贴你在第三步中复制的命令。

如果你使用的是HTTPS,该命令将是。

$ git clone https://username@bitbucket.org/yourusername/yourrepository

如果是SSH,使用这个命令。

$ git clone ssh://git@bitbucket.org:yourusername/yourrepository

一个成功的克隆命令将出现在你本地驱动器上的一个新的子目录中,在你的目标目录内。它的名字将与你克隆的版本库相同。

总结

Git 可以帮助你管理你的项目,并轻松监控项目历史。它使你能够创建一个新的项目,复制一个现有的仓库,创建一个新的功能,并与你的团队一起工作。除此之外,它还为你的开发项目提供了一个轻量级、安全的工作环境。

然而,对于初学者来说,学习Git可能是令人生畏的,因为它的操作涉及大量的命令。要了解Git的多个开发区域--从本地仓库到远程仓库--也需要一些时间,但一旦你更好地掌握了它,你就能更有效地驾驭你的开发项目。我们希望本教程提供了一个学习Git基础知识的有用方法。如果你想了解更多关于使用Git来提高你的生产力,可以尝试使用git钩子来自动化你的工作流程。。