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
標識的按鈕,如下圖:
-
點擊這個操作后會將這個倉庫的文件、提交歷史、issues和其余東西的倉庫復制到自己的
github
倉庫中,而你本地倉庫是不會存在任何更改。 -
然后你就可以通過
git clone
對你這個復制的遠程倉庫進行克隆。 -
后續更改任何東西都可以在本地完成,如
git add
、git commit
一系列的操作,然后通過push
命令推到自己的遠程倉庫。 -
如果希望對方接受你的修改,可以通過發送
pull requests
給對方,如果對方接受。則會將你的修改內容更新到倉庫中。
整體流程如下圖:
2.2 clone
clone
的作用是將文件從遠程代碼倉下載到本地,從而形成一個本地代碼倉。
執行clone
命令后,會在當前目錄下創建一個名為【倉庫名】
的目錄,并在這個目錄下初始化一個 .git
文件夾,然后從中讀取最新版本的文件的拷貝。默認配置下遠程 Git
倉庫中的每一個文件的每一個版本都將被拉取下來。
2.3 branch
branch
,譯為分支,其作用簡單而言就是開啟另一個分支, 使用分支意味著你可以把你的工作從開發主線上分離開來,以免影響開發主線。
Git
處理分支的方式十分輕量,創建新分支這一操作幾乎能在瞬間完成,并且在不同分支之間的切換操作也是一樣便捷。
在我們開發中,默認只有一條master
分支,如下圖所示:
通過git branch
可以創建一個分支,但并不會自動切換到新分支中去。
下圖表示創建了一個分支——testing,其中HEAD表示當前分支:
通過git checkout
可以切換到另一個testing
分支:
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:
-
創建分支 用于添加新特性或修復問題
更新本地工作目錄和遠程 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 # 查看當前分支
-
提交更改 到本地分支,提交前請進行 lint 檢查,并進行簽名提交:
git rebase upstream/,分支名git add <file_or_directory> # 將更改添加到暫存區 git commit -s -m "message for your changes" # 上傳文件并添加標簽
若出現如下報錯,設置賬號密碼即可。
?
-
推送分支 到您的 Fork 倉庫,建議每個 PR 只包含一次提交:
# 與上游同步 git fetch upstream main git rebase upstream/main
-
提交拉取請求 (PR)
提交 PR 前,建議先審查一下您的更改,確保您的代碼與主分支沒有沖突,并且沒有包含冗余的代碼。
網頁提交PR:
在自己fork的倉庫中進行,先添加文件再在跳出的【Compare & pull request】中PR即可。
4 參考
【GitHub】如何在github上提交PR(Pull Request) + 多個pr同時提交、互不干擾_github pr-CSDN博客
Github提交PR與修改pr_github 修改pr-CSDN博客