Github和git的学习(不定期更新)

news/2024/10/13 22:56:28

学习GitHub和Git

可以使用 GitHub 和 Git 来开展工作协作。[官方文档直达]([GitHub 入门文档 - GitHub 文档](关于 Git - GitHub 文档))

关于 GitHub

GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。

通过将代码存储在 GitHub 上的“存储库”中,你将可以:

  • “展示或共享”**** 你的工作。
  • 持续“跟踪和管理”**** 对代码的更改。
  • 让其他人“审查”**** 你的代码,并提出改进建议。
  • 在共享的项目中开展“协作”****,无需担心这些更改会在准备好集成更改之前影响协作者的工作。

协作式工作是 GitHub 最基本的功能之一,该功能由开源软件 Git 实现,而 GitHub 是以该软件为基础进行构建的。

关于 Git

Git 是一种可以智能追踪文件中的更改的版本控制系统。 在你和一组人员同时对同一文件进行更改时,Git 的价值就体现出来了。

通常,要在基于 Git 的工作流中执行此操作,需要:

  • 为你(和协作者)正在处理的文件的主副本“创建分支”****。
  • 在自己的个人分支上独立安全地对文件“进行编辑”****。
  • 让 Git 智能地将特定更改“合并”**** 回文件的主副本,从而确保更改不会影响其他人的更新。
  • 让 Git “跟踪”**** 你和其他人的更改,这样就可以一直使用项目的最新版本。

要了解有关 Git 的详细信息,请参阅“关于 Git”。

Git 和 GitHub 如何协同工作?

将文件上传到 GitHub 时,会将其存储在“Git 存储库”中。 这意味着,对 GitHub 中的文件进行更改(或“提交”)时,Git 会自动开始跟踪和管理更改。

可在浏览器中直接在 GitHub 上完成大量与 Git 相关的操作,例如创建 Git 存储库、创建分支以及上传和编辑文件。

但是,大多数人在本地(在自己的计算机上)处理文件,然后不断地将这些本地更改(以及所有相关的 Git 数据)与 GitHub 上的中央“远程”存储库进行同步。 有许多工具可执行此操作,比如 GitHub Desktop。

开始与其他人的协作后,所有人都需要同时在同一存储库上工作,你将不断:

  • 从 GitHub 上的远程存储库“拉取”**** 协作者所做的所有最新更改。
  • 将你自己的更改“推送”**** 回 GitHub 上的同一远程存储库。

Git 负责确定如何智能地合并此更改流,GitHub 可通过“拉取请求”等功能帮助你管理更改流。

Git 和 GitHub 如何协同工作?

将文件上传到 GitHub 时,会将其存储在“Git 存储库”中。 这意味着,对 GitHub 中的文件进行更改(或“提交”)时,Git 会自动开始跟踪和管理更改。

可在浏览器中直接在 GitHub 上完成大量与 Git 相关的操作,例如创建 Git 存储库、创建分支以及上传和编辑文件。

但是,大多数人在本地(在自己的计算机上)处理文件,然后不断地将这些本地更改(以及所有相关的 Git 数据)与 GitHub 上的中央“远程”存储库进行同步。 有许多工具可执行此操作,比如 GitHub Desktop。

开始与其他人的协作后,所有人都需要同时在同一存储库上工作,你将不断:

  • 从 GitHub 上的远程存储库“拉取”**** 协作者所做的所有最新更改。
  • 将你自己的更改“推送”**** 回 GitHub 上的同一远程存储库。

Git 负责确定如何智能地合并此更改流,GitHub 可通过“拉取请求”等功能帮助你管理更改流。

从哪里开始?

如果你刚开始使用 GitHub,并且不熟悉 Git,我们建议阅读“开始你的旅程”类别中的文章。 这些文章重点介绍可以直接在浏览器中在 GitHub 上完成的任务,并帮助你:

  • 在 GitHub 上“创建帐户”****。

  • 了解“GitHub 流程”****,以及协作式工作的主要原理(分支、提交、拉取请求、合并)。

  • 个性化个人资料以分享你的兴趣和技能。

  • 浏览 GitHub 以找到自己的项目的灵感,并与其他人联系。

  • 了解如何下载感兴趣的代码供自己使用。

  • 了解如何将正在处理的内容上传到 GitHub 存储库。

个人帐户的 GitHub Free

通过个人帐户的 GitHub Free,可以在具有完整功能集的无限公共存储库和具有有限功能集的无限私有存储库上与无限的协作者合作。

使用 GitHub Free,你的个人帐户包括:

  • GitHub Community Support
    GitHub 社区支持
  • Dependabot alerts
  • 公共存储库的部署保护规则
  • 双因素身份验证实施
  • 500 MB GitHub Packages 存储空间
  • 每月 120 GitHub Codespaces 个核心小时数
  • 每月 15 GB GitHub Codespaces 存储空间
  • GitHub Actions 功能:
    • 2,000 分钟/月
    • 公共存储库的部署保护规则
  • 公共存储库中的 GitHub Pages

GitHub 功能支持的核心语言

GitHub 功能的核心语言包括 C、C++、C#、Go、Java、JavaScript、PHP、Python、Ruby、 Rust、 Scala 和 TypeScript。 对于支持包管理器的功能,当前支持的包管理器及其相关语言包含在表中。

某些功能支持其他语言或包管理器。 如果想知道某个功能是否支持另一种语言,或请求支持某种语言,请访问 GitHub 社区讨论。

语言 GitHub Copilot 代码导航 Code scanning 依赖项关系图、Dependabot alerts Dependabot version updates, Dependabot security updates GitHub Actions GitHub Packages GitHub 软件包
C
C++
C# dotnet CLI dotnet CLI dotnet CLI
Go Go 模块 Go 模块
Java Maven、Gradle Maven、Gradle Maven、Gradle
JavaScript npm、Yarn npm npm
PHP Composer Composer
Python precise pip pip
Ruby RubyGems RubyGems RubyGems
Rust
Scala Maven Maven, Gradle
Swift Swift 包管理器
TypeScript npm、Yarn npm npm

注意:

  • GitHub Copilot 的语言支持因该语言的训练数据量和多样性而异。

  • 对依赖项关系图和 Dependabot alerts 的 Gradle 支持仅限于上传使用 依赖项提交 API 获取的数据。

  • 第三方操作的 code scanning 支持 PHP 和 Scala。

[快捷键指南大全](键盘快捷方式 - GitHub 文档)

文本样式

可以在评论字段和 .md 文件中以粗体、斜体、删除线、下标或上标文本表示强调。

Style 语法 键盘快捷键 示例 输出
加粗 ** **__ __ Command+B (Mac) 或 Ctrl+B (Windows/Linux) **This is bold text** 这是粗体文本
斜体 * *_ _ Command+I (Mac) 或 Ctrl+I (Windows/Linux) _This text is italicized_ 这是斜体文本
删除线 ~~ ~~ ~~This was mistaken text~~ 这是错误文本
粗体和嵌入的斜体 ** **_ _ **This text is _extremely_ important** 此文本_非常_重要
全部粗体和斜体 *** *** ***All this text is important*** 所有这些文本都很重要
下标 <sub> </sub> This is a <sub>subscript</sub> text 这是下标文本
上标 <sup> </sup> This is a <sup>superscript</sup> text 这是上标文本
上下文 相对链接
在同一分支的 .md 文件中 /assets/images/electrocat.png
在另一个分支的 .md 文件中 /../main/assets/images/electrocat.png
在仓库的议题、拉取请求和评论中 ../blob/main/assets/images/electrocat.png?raw=true
在另一个存储库的 .md 文件中 /../../../../github/docs/blob/main/assets/images/electrocat.png
在另一个仓库的议题、拉取请求和评论中 ../../../github/docs/blob/main/assets/images/electrocat.png?raw=true

注意:上表中的最后两个相对链接只有在查看者至少对包含这些图像的专用存储库具有读取访问权限时,才可用于专用存储库中的图像。

  • 若要创建任务列表,请在列表项前加连字符和空格,后接 [ ]。 要将任务标记为完成,请使用 [x]

    - [x] #739
    - [ ] https://github.com/octo-org/octo-repo/issues/740
    - [ ] Add delight to the experience when all tasks are complete :tada:
    

    显示 Markdown 的呈现版本的屏幕截图。 对问题的引用呈现为问题标题。

    如果任务列表项说明以括号开头,则需要使用 \ 进行转义:

    - [ ] \(Optional) Open a followup issue
    

脚注

您可以使用此括号语法为您的内容添加脚注:

解释Here is a simple footnote[^1].A footnote can also have multiple lines[^2].[^1]: My reference.
[^2]: To add line breaks within a footnote, prefix new lines with 2 spaces.This is a second line.

脚注将呈现如下:

呈现的 Markdown 的屏幕截图,其中显示了用于指示脚注的上标数字,以及笔记中的可选换行符。

注意:Markdown 中脚注的位置不会影响该脚注的呈现位置。 您可以在引用脚注后立即写脚注,脚注仍将呈现在 Markdown 的底部。

Wiki 不支持脚注。

警报

警报是基于块引用语法的 Markdown 扩展,可用于强调关键信息。 在 GitHub 上,它们以独特的颜色和图标显示,以指示内容的显著性。

只有在对用户成功至关重要时才使用警报,并将每篇文章的警报限制在一到两个,以防止读者负担过重。 此外,应避免连续发出警报。 警报无法嵌套在其他元素中。

要添加警报,请使用指定警报类型的特殊块引用行,然后在标准块引用中添加警报信息。 可以使用以下五种类型的警报:

解释> [!NOTE]
> Useful information that users should know, even when skimming content.> [!TIP]
> Helpful advice for doing things better or more easily.> [!IMPORTANT]
> Key information users need to know to achieve their goal.> [!WARNING]
> Urgent info that needs immediate user attention to avoid problems.> [!CAUTION]
> Advises about risks or negative outcomes of certain actions.

下面是呈现的警报:

呈现的 Markdown 警报的屏幕截图,其中显示了“注释”、“使用技巧”、“重要”、“警告”和“注意”如何以不同的彩色文本和图标呈现。

忽略 Markdown 格式

通过在 Markdown 字符前面输入 \,可指示 GitHub 忽略 Markdown 格式(或对其进行转义)。

Let's rename \*our-new-project\* to \*our-old-project\*.

呈现的 GitHub Markdown 的屏幕截图,其中显示了反斜杠如何阻止将星号转换为斜体。 文本显示“让我们将 our-new-project 重命名为 our-old-project”。

有关反斜杠的详细信息,请参阅 Daring Fireball 的“Markdown 语法”。

注意:在问题或拉取请求的标题中不会忽略 Markdown 格式。

创建折叠部分

可以通过创建读者可以选择展开的折叠部分来暂时隐藏 Markdown 的分区。 例如,当想在问题评论中包含可能不是每个读者都相关或感兴趣的技术细节时,可以将这些细节放在折叠部分中。

块中的任何 Markdown 都将被折叠,直到读者单击 展开详细信息。
点击展开

<details> 块中,使用 <summary> 标记让读者知道里面的内容。 标签显示在的右侧。

解释<details><summary>Tips for collapsed sections</summary>### You can add a headerYou can add text within a collapsed section. You can add an image or a code block, too.```rubyputs "Hello World"
```</details>

默认情况下,<summary> 标签中的 Markdown 将被折叠:

GitHub 上呈现的此页上的 Markdown 的屏幕截图,其中显示了一个向右箭头和标题“折叠部分的提示”。

读者单击 后,将展开详细信息:

GitHub 上呈现的此页上的 Markdown 的屏幕截图,其中指示折叠部分可以包含标题、文本句子、图像和代码块。

创建 Mermaid 关系图

Mermaid 是一款受 Markdown 启发的工具,可将文本呈现为关系图。 例如,Mermaid 可以呈现流程图、序列图、饼图等。 有关详细信息,请参阅 Mermaid 文档。

若要创建 Mermaid 关系图,请使用 mermaid 语言标识符在围栏代码块中添加 Mermaid 语法。 有关创建代码块的详细信息,请参阅“创建和突显代码块”。

例如,可以通过指定值和箭头来创建流程图。

解释Here is a simple flow chart:```mermaid
graph TD;A-->B;A-->C;B-->D;C-->D;
```

呈现的 Mermaid 流程图的屏幕截图,其中包含四个标有 A、B、C 和 D 的淡紫色框。箭头从 A 延伸到 B,从 B 延伸 D,从 A 延伸 C,从 C 延伸到 D。

注意:如果在 GitHub 上使用 Mermaid 语法时运行第三方 Mermaid 插件,你可能会发现出错。

graph TD;A-->B;A-->C;B-->D;C-->D;

编写内联表达式

有两个选项可用于将内嵌在文本中的数学表达式分隔出来。 可以使用美元符号 ($) 将表达式括起来,或者以在表达式开头使用 $``,并在其末尾使用 ``$。 当正在编写的表达式包含与 markdown 语法重叠的字符时,后一种语法很有用。 有关详细信息,请参阅“基本撰写和格式语法”。

This sentence uses `$` delimiters to show math inline:  $\sqrt{3x-1}+(1+x)^2$

呈现的 Markdown 的屏幕截图,其中显示了数学表达式如何显示在 GitHub 上。 该方程式是“3x - 1”的平方根加上“1 + x”的平方。

This sentence uses $\` and \`$ delimiters to show math inline:  $`\sqrt{3x-1}+(1+x)^2`$

呈现的 Markdown 的屏幕截图,其中显示了数学表达式如何显示在 GitHub 上。 该方程式是“3x - 1”的平方根加上“1 + x”的平方。

将表达式编写为块

要以块的形式添加数学表达式,请启动一个新行,并使用两个美元符号 $$ 分隔表达式。

**The Cauchy-Schwarz Inequality**
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$

呈现的 Markdown 的屏幕截图,其中显示复杂的方程式如何显示在 GitHub 上。 加粗的文本为“The Cauchy-Schwarz Inequality”(柯西不等式)。 文本下方显示的是一个方程式,显示数列 A 和数列 B 在 k 取值从 1 到 n 的乘积累加的平方小于等于数列 A 中的数字的平方累加(1 到 n)与数列 B 中的数字的平方累加(1 到 n)的乘积。

或者,可以使用 ````math代码块语法将数学表达式显示为块。 使用此语法时,无需使用$$` 分隔符。 以下内容的呈现方式与上述内容相同:

解释**The Cauchy-Schwarz Inequality**```math
\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)
```

附加文件

可通过将各种文件类型附加到议题和拉取请求来传达信息。

Note: For public repositories, uploaded files can be accessed without authentication. In the case of private and internal repositories, only people with access to the repository can view the uploaded files.

To attach a file to an issue or pull request conversation, drag and drop it into the comment box. Alternatively, you can click in the formatting bar above the comment box to browse, select, and add a file from your computer.

Screenshot of the comment box. The "Attach files" icon is outlined in orange.

Git学习

基本 Git 命令

为使用 Git,开发人员使用特定命令来复制、创建、更改和合并代码。 这些命令可以直接从命令行执行,也可以使用 GitHub Desktop等应用程序执行。 以下是使用 Git 的一些常用命令:

  • git init 初始化一个全新的 Git 存储库并开始跟踪现有目录。 它在现有目录中添加一个隐藏的子文件夹,该子文件夹包含版本控制所需的内部数据结构。
  • git clone 创建远程已存在的项目的本地副本。 克隆包括项目的所有文件、历史记录和分支。
  • git add 暂存更改。 Git 跟踪对开发人员代码库的更改,但有必要暂存更改并拍摄更改的快照,以将其包含在项目的历史记录中。 此命令执行暂存,即该两步过程的第一部分。 暂存的任何更改都将成为下一个快照的一部分,并成为项目历史记录的一部分。 通过单独暂存和提交,开发人员可以完全控制其项目的历史记录,而无需更改其编码和工作方式。
  • git commit 将快照保存到项目历史记录中并完成更改跟踪过程。 简言之,提交就像拍照一样。 任何使用 git add 暂存的内容都将成为使用 git commit 的快照的一部分。
  • git status 将更改的状态显示为未跟踪、已修改或已暂存。
  • git branch 显示正在本地处理的分支。
  • git merge 将开发线合并在一起。 此命令通常用于合并在两个不同分支上所做的更改。 例如,当开发人员想要将功能分支中的更改合并到主分支以进行部署时,他们会合并。
  • git pull 使用远程对应项的更新来更新本地开发线。 如果队友已向远程上的分支进行了提交,并且他们希望将这些更改反映到其本地环境中,则开发人员将使用此命令。
  • git push 使用本地对分支所做的任何提交来更新远程存储库

示例:参与现有存储库

解释# download a repository on GitHub to our machine
# Replace `owner/repo` with the owner and name of the repository to clone
git clone https://github.com/owner/repo.git# change into the `repo` directory
cd repo# create a new branch to store any new changes
git branch my-branch# switch to that branch (line of development)
git checkout my-branch# make changes, for example, edit `file1.md` and `file2.md` using the text editor# stage the changed files
git add file1.md file2.md# take a snapshot of the staging area (anything that's been added)
git commit -m "my snapshot"# push changes to github
git push --set-upstream origin my-branch

示例:启动新存储库并将其发布到 GitHub

首先,您需要在 GitHub 上创建一个新存储库。 有关详细信息,请参阅“Hello World”。 不要使用 README、.gitignore 或 License 文件初始化存储库。 这个空存储库将等待您的代码。

解释# create a new directory, and initialize it with git-specific functions
git init my-repo# change into the `my-repo` directory
cd my-repo# create the first file in the project
touch README.md# git isn't aware of the file, stage it
git add README.md# take a snapshot of the staging area
git commit -m "add README to initial commit"# provide the path for the repository you created on github
git remote add origin https://github.com/YOUR-USERNAME/YOUR-REPOSITORY-NAME.git# push changes to github
git push --set-upstream origin main

示例:为 GitHub 的现有分支做出贡献

此示例假定计算机上已有一个名为 repo 的项目,并且自上次在本地进行更改以来,已将新分支推送到 GitHub。

解释# change into the `repo` directory
cd repo# update all remote tracking branches, and the currently checked out branch
git pull# change into the existing branch called `feature-a`
git checkout feature-a# make changes, for example, edit `file1.md` using the text editor# stage the changed file
git add file1.md# take a snapshot of the staging area
git commit -m "edit file1"# push changes to github
git push

1.GitHub获取资源

首先先找到自己需要的项目,然后点击绿色Code

image-20240622163401916

可以看到有三种下载方式

image-20240622163437379

  1. 使用你的Idea或者pycharm使用HTTPS代码直接爬取
  2. 使用你电脑上自带的Github来下载
  3. 使用压缩包下载

再往下则是作者想说的话和项目的一些相关信息

image-20240622163626119

1.2GitHub项目创建

先来到右上角找到这个加号,并点击

image-20240622163705811

点击New repository,即可新建一个项目

image-20240622163738906

  1. 项目名称
  2. 项目介绍(建议使用中文,方便国人查找)
  3. 创建一个README文件(建议勾选

![image-20240622164043846]https://images.cnblogs.com/cnblogs_com/blogs/729264/galleries/2425820/o_241013143618_image-20240622164043846.png)

点击绿色按钮“Create repository创建项目

image-20240622164130199

创建好后的界面

image-20240622164223598

1.3 互动功能

找到Issues按钮点击

image-20240622164312304

点解绿色“New issue”按钮创建新的话题、议题、问题等意思

image-20240622164459573

  1. 写标题

  2. 写内容

image-20240622164802072

随后点击绿色按钮“Submit new issue”即可

1.4 使用git将项目上传上去:

原文链接,点击直达

1.4.1 生成ssh key

首先要检查是否已经生成密钥,可以查看自己的电脑,位置在C:\Users\18246 \ .ssh里面,

image-20241013215319563

如果没有,可以通过 ssh-keygen-t rsa -C "自己的邮箱"来生成(直接一路回车就好,因为没有截图,就直接用网图了)

image-20241013215451136

生成之后去上面的位置点开id_rsa.pub(可用记事本打开),得到ssh key公钥

image-20241013215553516

1.4.2 为GitHub配置ssh key

复制之后去GitHub官网,点击右上角头像并找到设置

image-20241013215629021

随后点击左侧的SSH and GPG keys,并点击绿色的New SSH key

image-20241013215743120

image-20241013215836317

随便写一个这个ssh连接的名字(红色箭头),将你上面复制的id_rsa.pub文件中key粘贴到下面框中(蓝色箭头)点击Add SSH key就可以了。上图就是添加成功的图。

image-20241013215923123

1.4.3 建立本地仓库

git init //把这个目录变成Git可以管理的仓库
git add README.md //文件添加到仓库
git add . //不但可以跟单一文件,还可以跟通配符,更可以跟目录。一个点就把当前目录下所有未追踪的文件全部add了 
git commit -m "first commit" //把文件提交到仓库
git remote add origin git@github.com:wangjiax9/practice.git //关联远程仓库
git push -u origin master(这里的master要看,有时候这里不同你要换) //把本地库的所有内容推送到远程库上

然后先变成git可以管理的仓库

image-20241013220236278

然后你会发现你的文件夹中多了一个.git文件

注意:这个目录是Git用来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

image-20241013220523065

随后将文件添加到仓库:git add (文件名)/git add .(我这里是之后截的图)

image-20241013220426883

随后把文件提交到仓库,双引号内是提交注释。使用命令git commit -m "提交信息"

image-20241013220706084

这样本地仓库就建立好了。

1.4.4 关联GitHub仓库

到自己的GitHub项目下复制仓库连接

image-20241013220900084

随后执行命令:git remote add origin git@github.com:1zero0/PlantVSZombies.git

image-20241013220946332

可以使用git remote -v查看自己的连接(我这里使用的是http的)

image-20241013221128560

1.4.5 上传本地项目

执行命令:git push -u origin main(这里main可能不同)

image-20241013221203920

随后就可以去自己的项目下面看了,已经上传成功了。

image-20241013221231090

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

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

相关文章

学期2024-2025-1 学号20241424 《计算机基础与程序设计》第4周学习总结

学期2024-2025-1 学号20241424 《计算机基础与程序设计》第4周学习总结 作业信息 |这个作业属于(2024-2025-1-计算机基础与程序设计)| |-- |-- | |这个作业要求在(2024-2025-1计算机基础与程序设计第四周作业| |这个作业的目标|<写上具体方面>参考上面的学习总结模板,…

Python 禅道测试用例助手

程序及源码下载地址: https://gitee.com/ishouke/zen-tao-testcase-helper 实现功能 禅道测试用例助手。 实现xmind用例导入禅道,支持自动创建产品,模块,删除用例,此外,支持禅道导出的excel用例转xmind用例之后,再导入禅道,实现禅道用例管理闭环 使用要求 适配xmind版本…

Seata的AT模型

什么是seataSeata(Simple Extensible Autonomous Transaction Architecture)是一个开源的分布式事务解决方案,它主要用于解决微服务架构下分布式事务问题。Seata 提供了多种分布式事务解决方案,适用于不同场景,以下是其几种主要的解决方案:1. AT 模式(Automatic Transac…

任务3

导入照片:在照片编辑软件(如 Photoshop、GIMP 或 Canva)中打开要添加水印的照片。 创建文本图层:创建一个新的文本图层,用于存放水印文字。 输入水印文本:在文本图层中输入您的水印文本。您可以调整字体、大小、颜色和透明度。 调整位置:将水印文本放置在照片中的合适位…

[转]深度学习下的相机标定

相机标定在计算机视觉和机器人等领域中占据举足轻重的地位,它为后续场景理解及决策推断提供了标准化的成像空间和精准的几何先验。然而,传统的相机标定技术常常依赖于繁琐的人工干预和特定的场景假设,因此难以灵活拓展至不同的相机模型和标定场景。 近年来,基于深度学习的解…

标题、导航、目录添加序号

在主题文件夹添加base.user.css文件,把下面的内容复制进去。/*************************************** Header Counters in Content**************************************//** initialize css counter */ #write {counter-reset: h1 }h1 {counter-reset: h2 }h2 {counter-r…