Github提交Pull Request教程 Git基礎掃盲(零基礎易懂)

1 PR是什么?

PR,全稱Pull Request(拉取請求),是一種非常重要的協作機制,它是 Git 和 GitHub 等代碼托管平臺中常見的功能,被廣泛用于參與社區貢獻,從而促進項目的發展。

PR的整個過程:如果想給別人的開源倉庫貢獻代碼,通常是先 fork 別人的項目,,然后本地修改完成提交到自己的個人 fork 倉庫, 最后提交 PR ,等待別人合入你的代碼。

2 fork、clone、branch?

2.1 fork

Git倉庫中,fork代表分叉,克隆某個倉庫,形成新拷貝。

fork包含了原來的倉庫(即upstream repository,上游倉庫)所有內容,如分支、Tag、提交,如果想將你的修改合并到原項目中時,可以通過的 Pull Request 把你的提交貢獻回原倉庫。

  • 使用方法:

github發現感興趣項目的時候,可以通過點擊github倉庫中右上角fork標識的按鈕,如下圖:

img

  • 點擊這個操作后會將這個倉庫的文件、提交歷史、issues和其余東西的倉庫復制到自己的github倉庫中,而你本地倉庫是不會存在任何更改。

  • 然后你就可以通過git clone對你這個復制的遠程倉庫進行克隆。

  • 后續更改任何東西都可以在本地完成,如git addgit commit一系列的操作,然后通過push命令推到自己的遠程倉庫。

  • 如果希望對方接受你的修改,可以通過發送pull requests給對方,如果對方接受。則會將你的修改內容更新到倉庫中。

整體流程如下圖:

image-20241201213839594

2.2 clone

clone的作用是將文件從遠程代碼倉下載到本地,從而形成一個本地代碼倉。

執行clone命令后,會在當前目錄下創建一個名為【倉庫名】的目錄,并在這個目錄下初始化一個 .git 文件夾,然后從中讀取最新版本的文件的拷貝。默認配置下遠程 Git 倉庫中的每一個文件的每一個版本都將被拉取下來。

2.3 branch

branch,譯為分支,其作用簡單而言就是開啟另一個分支, 使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。

Git 處理分支的方式十分輕量,創建新分支這一操作幾乎能在瞬間完成,并且在不同分支之間的切換操作也是一樣便捷。

在我們開發中,默認只有一條master分支,如下圖所示:

image-20241201210919706

通過git branch可以創建一個分支,但并不會自動切換到新分支中去。

下圖表示創建了一個分支——testing,其中HEAD表示當前分支:

image-20241201210858382

通過git checkout可以切換到另一個testing分支:

image-20241201211038039

Git 刪除分支——如何刪除本地或遠程分支_git 刪除本地分支-CSDN博客

2.4 三者區別

  • fork 只能對代碼倉進行操作,且 fork 不屬于 git 的命令,通常用于代碼倉托管平臺的一種“操作”;

  • clone是 git 的一種命令,作用是將文件從遠程代碼倉下載到本地,從而形成一個本地代碼倉;

  • branch 特征與 fork 很類似,fork 得到的是一個新的、自己的代碼倉,而 branch 得到的是一個代碼倉的一個新分支;

3 在Github上提交PR

基本流程:

在這里插入圖片描述

3.1 Fork

FORK 目標倉庫<xx.github.io>到您的倉庫,相當于得到一個可以修改的拷貝,地址為 :

https://github.com/<your-username>/xx.github.io

3.2 Clone

CLONE 您自己的倉庫到本地。

git clone https://github.com/<your-username>/seu.github.io.git

然后,您可以創建新的分支來完成您想要做的修改。

3.3 提交Pull Request

進入目錄:

cd xx.github.io

設置 Remote為 https://github.com/SEU-Master/seu.github.io,使用以下兩個命令:

git remote add upstream https://github.com/SEU-Master/seu.github.io
git remote set-url --push upstream no-pushing

配置好遠程倉庫后,您可以通過【git remote -v】命令檢查您的 git 遠程配置:

$ git remote -v
origin ? ? https://github.com/<your-username>/seu.github.io.git (fetch)
origin ? ? https://github.com/<your-username>/seu.github.io.git (push)
upstream ? https://github.com/SEU-Master/seu.github.io (fetch)
upstream ? no-pushing (push)

配置好這些后,您可以輕松地將本地分支與上游分支同步。

命令行提交PR:
  1. 創建分支 用于添加新特性或修復問題

    更新本地工作目錄和遠程 Fork 倉庫:

    cd seu.github.io
    git fetch upstream
    git checkout main  # 選擇main分支

    創建一個新的分支:

    git checkout -b s3di-lab  # 創建名為s3di-lab的新分支
    git checkout s3di-lab ? ? #切換到此分支

    在新分支上進行更改,之后構建并測試代碼。

    git branch # 查看當前分支
  2. 提交更改 到本地分支,提交前請進行 lint 檢查,并進行簽名提交:

    git rebase upstream/,分支名git add <file_or_directory>  # 將更改添加到暫存區
    git commit -s -m "message for your changes" # 上傳文件并添加標簽

    image-20241202002318172

    若出現如下報錯,設置賬號密碼即可。?

  3. 推送分支 到您的 Fork 倉庫,建議每個 PR 只包含一次提交:

    # 與上游同步
    git fetch upstream main
    git rebase upstream/main
  4. 提交拉取請求 (PR)

    提交 PR 前,建議先審查一下您的更改,確保您的代碼與主分支沒有沖突,并且沒有包含冗余的代碼。

網頁提交PR:

在自己fork的倉庫中進行,先添加文件再在跳出的【Compare & pull request】中PR即可。

image-20241202001305848

4 參考

【GitHub】如何在github上提交PR(Pull Request) + 多個pr同時提交、互不干擾_github pr-CSDN博客

Github提交PR與修改pr_github 修改pr-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65750.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65750.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65750.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL 中刪除重復數據 SQL 寫法

要在 MySQL 中刪除重復的數據并只保留一條&#xff0c;可以使用下面的方法&#xff08;要用的時候直接復制小改下條件和表名稱即即可&#xff09; 方法一&#xff1a;使用 left join 子查詢刪除重復數據(推薦) 溫馨提示&#xff1a;本人在 500w 數據下執行此 SQL 耗費 15s-30s…

RabbitMQ 可觀測性最佳實踐

RabbitMQ 簡介 RabbitMQ 是一個開源的消息代理和隊列服務器&#xff0c;用 Erlang 語言編寫&#xff0c;支持多種客戶端。它通過使用交換機&#xff08;Exchanges&#xff09;、隊列&#xff08;Queues&#xff09;和綁定&#xff08;Bindings&#xff09;來路由消息&#xff…

美攝科技PC端視頻編輯解決方案,為企業打造專屬的高效創作平臺

在當今這個信息爆炸的時代&#xff0c;視頻已成為不可或缺的重要內容形式&#xff0c;美攝科技推出了PC端視頻編輯解決方案的私有化部署服務&#xff0c;旨在為企業提供一款量身定制的高效創作平臺。 一、全面功能&#xff0c;滿足企業多樣化需求 美攝科技的PC端視頻編輯解決…

【Oracle篇】深入了解執行計劃中的訪問路徑(含表級別、B樹索引、位圖索引、簇表四大類訪問路徑)

&#x1f4ab;《博主介紹》&#xff1a;?又是一天沒白過&#xff0c;我是奈斯&#xff0c;從事IT領域? &#x1f4ab;《擅長領域》&#xff1a;??擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控&#xff1b;并對SQLserver、NoSQL(…

騰訊云AI代碼助手編程挑戰賽-廚房助手之AI大廚

騰訊云AI代碼助手編程挑戰賽-廚房助手之AI大廚 作品簡介 身處當今如火箭般迅猛發展的互聯網時代&#xff0c;智能聊天助手已然化身成為提升用戶體驗的關鍵利器&#xff0c;全方位滲透至人們的數字生活。 緊緊跟隨著這股洶涌澎湃的時代浪潮&#xff0c;我毅然投身于極具挑戰性…

vscode 無法使用npm, cmd命令行窗口可以正常執行

解決方法&#xff1a; 執行命令獲得命令的位置 get-command npm 得到如下 然后刪除或者修改 npm.ps1文件 讓其不能使用就行。然后重啟vscode即可。 pnpm 同理即可 另外加速源 國內鏡像源&#xff08;淘寶&#xff09;&#xff1a; npm config set registry https://regist…

簡易CPU設計入門:算術邏輯單元(四)

項目代碼下載 請大家首先準備好本項目所用的源代碼。如果已經下載了&#xff0c;那就不用重復下載了。如果還沒有下載&#xff0c;那么&#xff0c;請大家點擊下方鏈接&#xff0c;來了解下載本項目的CPU源代碼的方法。 CSDN文章&#xff1a;下載本項目代碼 上述鏈接為本項目…

Spring Boot 和微服務:快速入門指南

&#x1f496; 歡迎來到我的博客&#xff01; 非常高興能在這里與您相遇。在這里&#xff0c;您不僅能獲得有趣的技術分享&#xff0c;還能感受到輕松愉快的氛圍。無論您是編程新手&#xff0c;還是資深開發者&#xff0c;都能在這里找到屬于您的知識寶藏&#xff0c;學習和成長…

VSCode 使用鼠標滾輪控制字體

一、 文件 | 首選項 | 設置 二、單擊在 settings.json中編輯 "editor.mouseWheelZoom": true 注注注意&#xff1a;保存哦&#xff01;ctrlS 三、測試 按住ctrl鼠標滾輪&#xff0c;控制字體大小

tip:vue中路由跳轉,返回是還想保留原來的搜索條件

新寫的一個項目&#xff0c;使用后發現&#xff0c;點“詳細”跳轉到詳情頁面。返回時&#xff0c;原來的篩條件沒了&#xff0c;又把全部的數據都查詢出來&#xff0c;還需要重新篩選一下&#xff0c;使用起來很不友好。 解決辦法&#xff1a;瀏覽器本地存儲&#xff08;Local…

rabbitmq的三個交換機及簡單使用

提前說一下&#xff0c;創建隊列&#xff0c;交換機&#xff0c;綁定交換機和隊列都是在生產者。消費者只負責監聽就行了&#xff0c;不用配其他的。 完成這個場景需要兩個服務哦。 1直連交換機-生產者的代碼。 在配置類中創建隊列&#xff0c;交換機&#xff0c;綁定交換機…

uniapp 使用 pinia 狀態持久化

1.創建文件 stores -index.js -global.js2.對應文件內容 index.js 安裝插件 npm i pinia-plugin-persistedstate import { createPinia } from pinia; import persist from pinia-plugin-persistedstate; const pinia createPinia(); pinia.use(persist); export default pi…

代碼隨想錄算法訓練營第3天(鏈表1)| 203.移除鏈表元素 707.設計鏈表 206.反轉鏈表

一、203.移除鏈表元素 題目&#xff1a;203. 移除鏈表元素 - 力扣&#xff08;LeetCode&#xff09; 視頻&#xff1a;手把手帶你學會操作鏈表 | LeetCode&#xff1a;203.移除鏈表元素_嗶哩嗶哩_bilibili 講解&#xff1a;代碼隨想錄 注意&#xff1a; 針對頭結點和非頭結點的…

NetMQ里Push-Pull模式,消息隔一收一問題小記

問題&#xff1a; 本機環境下&#xff0c;在push端向pull端發送消息的過程中&#xff0c;發現同一個進程里的pusher和puller代碼&#xff0c;可以準確地完成收發&#xff1b; 然而&#xff0c;將代碼放在兩個進程里&#xff0c;將pusher發送的消息從1計數&#xff0c;puller端竟…

CES Asia 2025科技盛宴,AI智能體成焦點

2025第七屆亞洲消費電子技術展&#xff08;CES Asia賽逸展&#xff09;將在北京拉開帷幕&#xff0c;AI智能體有望成為展會的核心亮點。 深圳市人工智能行業協會發文表示全力支持CES Asia 2025&#xff08;賽逸展&#xff09;&#xff0c;稱其為人工智能領域的創新發展提供了強…

matlab編寫分段Hermite插值多項式

文章目錄 原理使用分段Hermite插值多項式原因公式第一類的兩個插值積函數第二類的兩個插值積函數 例題法一法二 代碼分段 Hermite 插值的思路&#xff1a;分段 Hermite 插值多項式的構造&#xff1a;MATLAB 實現代碼&#xff1a;結果如圖&#xff1a;注歸一化變量的作用&#x…

Cline(原Claude Dev)開源的IDE AI插件,如何搭配OpenRouter實現cursor功能,Cline怎么使用

Cline&#xff08;原Claude Dev&#xff09;是一個開源的IDE AI插件&#xff0c;可以使用你的命令行界面和編輯器的人工智能助手。 你可以直接在VS Code編輯器進行安裝。如果你使用過Cursor AI IDE的話&#xff0c;可以嘗試最新發布的Cline3.1版本。 在OpenRouter上&#xff0…

計科高可用服務器架構實訓(防火墻、雙機熱備,VRRP、MSTP、DHCP、OSPF)

一、項目介紹 需求分析&#xff1a; &#xff08;1&#xff09;總部和分部要求網絡拓撲簡單&#xff0c;方便維護&#xff0c;網絡有擴展和冗余性&#xff1b; &#xff08;2&#xff09;總部分財務部&#xff0c;人事部&#xff0c;工程部&#xff0c;技術部&#xff0c;提供…

企業級PHP異步RabbitMQ協程版客戶端 2.0 正式發布

概述 workerman/rabbitmq 是一個異步RabbitMQ客戶端&#xff0c;使用AMQP協議。 RabbitMQ是一個基于AMQP&#xff08;高級消息隊列協議&#xff09;實現的開源消息組件&#xff0c;它主要用于在分布式系統中存儲和轉發消息。RabbitMQ由高性能、高可用以及高擴展性出名的Erlan…

AsyncOperation.allowSceneActivation導致異步加載卡死

先看這段代碼&#xff0c;有個詭異的問題&#xff0c;不確定是不是bug public class Test : MonoBehaviour {void Start(){StartCoroutine(LoadScene(Ego.LoadingLevel));}IEnumerator LoadScene(string sceneName){LoadingUI.UpdateProgress(0.9f);yield return new WaitForS…