Github和git的學習(不定期更新)

叱咤月海鱼鱼猫發表於2024-10-13

學習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 header

You can add text within a collapsed section. 

You can add an image or a code block, too.

```ruby
   puts "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

相關文章