包新的Git安裝與使用教程(2024九月更新)

目錄

一、安裝git

1.下載git

2.git安裝

3.環境變量配置與測試

?二、使用教程

1.創建版本庫

2.版本回退

3.刪除和恢復文件


一、安裝git

1.下載git

官方下載地址:https://git-scm.com/download

?

然后進入以下頁面,點擊下載鏈接即可(windows一般都是64位)。?

下載完畢后打開安裝包進入安裝步驟。?

2.git安裝

選擇自己的安裝路徑,如下:

3.環境變量配置與測試

安裝完之后進行環境配置,在命令行輸入以下內容:

git config --global user.name "your_name"

按回車后接著輸入:

git config --global user.email "your_email"

完成后如下圖:

?注意:要填自己真實的郵箱

因為 Git 是分布式版本控制系統,所以需要填寫用戶名和郵箱作為一個標識,git config --global 參數,有了這個參數,表示你這臺機器上所有的 Git 倉庫都會使用這個配置,當然你也可以對某個倉庫指定的不同的用戶名和郵箱。
這樣,我們的 Git 客戶端就下載并安裝完成了。

?二、使用教程

1.創建版本庫

(1)通過命令git init把這個目錄變成git可以管理的倉庫

首先要新建一個目錄(注意:這里可以在盤里面直接創建新的文件目錄,也可以使用命令mkdir file_name進行創建)進行示范,這里演示第二種方法:

先將路徑切換到你自己的盤里面,命令如下:

隨后創建自己的文件夾,用命令mkdir?file_name進行創建:

然后進入文件夾所在位置查看自己是否創建成功,創建成功如下圖所示:

接著進入新創建的文件夾目錄中,這樣便在D盤目錄下創建了一個git_file版本庫,如下:

但此時它還不是?git 可以管理的倉庫,于是便要執行git init命令才行,如下:

此時你的git_file文件目錄下便會多一個.git的文件夾,這個文件夾這個目錄是 Git 來跟蹤管理版本的,沒事千萬不要手動亂改這個目錄里面的文件,否則會把 git 倉庫給破壞了,如下:

(2)把文件添加到版本庫中

在版本庫git_file目錄下新建一個記事本文件readme.txt,并輸入一些內容在里面,比如:11111

第一步:使用命令 git add readme.txt 添加到暫存區里面去,如下:

如果沒有任何提示,說明已經添加成功了。

第二步:用命令 git commit -m "注釋" (注釋里面的內容不設要求,自己能明白就行)告訴 Git,把文件提交到倉庫。

此時已經提交成功了,接下來我們可以看一下是否還有文件沒有提交,使用命令git status,如下:

如果出現這樣的字樣,說明文件已經全部提交了。

當我們對readme.txt文件進行修改,在其內容后面添加一行22222的內容,繼續使用git status進行狀態查看,如下:

從提示的內容可知,readme.txt文件的內容已經被修改,但是還未提交到倉庫里面,如果想要查看文件里面究竟修改了什么內容,可以使用命令git diff readme.txt進行查看,如下:

可以看到,紅色字體部分是修改前的內容,綠色部分是修改之后的內容。

確認修改了什么內容后我們就可以放心提交到倉庫了,提交修改過后的文件和前面說的提交文件是一樣的操作,第一步是把文件放入暫存區,使用命令git add 文件名 ,第二部是提交文件到倉庫,使用命令git commit -m "注釋",如下:

以上兩步完成以后可以再看一下是否還有文件沒有提交,使用git status進行查看,如下:

2.版本回退

我們對readme.txt文件再次進行修改,在后面添加一行內容33333,并提交到倉庫,如下:

如果我們不想要當前的版本,怎樣才能換回以前的呢?

我們可以使用git log來查看一下之前的歷史記錄,使用命令git log即可查看,如下:

我們可以看到,歷史記錄從上到下是從修改時間由近到遠排列的,在上面可以看到修改的時間以及修改人的信息,如果覺得信息太多的話,我們可以使用命令git reflog或者git log --pretty=oneline進行簡化,如下:

回到之前所說的問題,我們怎樣才能回退到之前的版本呢?這里推薦兩種方法:

第一種:使用命令git reset --hard HEAD^,這條命令的作用是回退到上一個版本,如果要回退到上上個版本,要使用命令git reset --hard HEAD^^,以此類推;

第二種:第一種方法只適用于要退回的版本不遠的情況,如果要退回前100個版本的話是非常不方便的,此時我們可以使用git reset --hard HEAD~100命令即可。

接下來我們做個示范,這是目前的readme.txt文件:

現在退回上一個版本,如下:

現在我們用git log看一下歷史記錄:

現在已經沒有剛才那個版本了,文件里面的內容也改變了,如果要恢復剛才的版本該怎么辦呢?

我們可以通過上面所說的版本號回退,使用命令git reset --hard 版本號,版本號用命令git reflog進行查看(上面有提過),如下:

現在我們可以使用命令git reset --hard 1a90bde來恢復了,演示如下:

使用cat readme.txt來查看文件里面的內容,如下:

可以看到,目前已經恢復成最新的版本了。

3.刪除和恢復文件

現在我們在版本庫git_file目錄里面添加一個文件c.txt,然后提交,如下:

如果我們要刪掉c.txt這個文件的話,可以直接在文件目錄中刪掉它,或者使用rm 文件名命令刪除,如果我想徹底從版本庫中刪掉了此文件的話,可以再執行commit 命令提交掉,現在目錄是這樣的:

只要沒有commit之前,如果我想在版本庫中恢復此文件如何操作呢?可以使用如下命令git restore-- c.txt,如下所示:

這里有 2 種情況,如下:

1. readme.txt 自動修改后,還沒有放到暫存區,使用 撤銷修改就回到和版本庫一模一樣的狀態。
2. 另外一種是 readme.txt 已經放入暫存區了,接著又作了修改,撤銷修改就回到添加暫存區后的狀態。

4.遠程倉庫

現在我們已經在本地創建了一個 Git 倉庫,又想讓其他人來協作開發,此時就可以把本地倉庫同步到遠程倉庫,同時還增加了本地倉庫的一個備份。

常用的遠程倉庫就是 github:https://github.com/,接下來我們演示如何將本地代碼同步到github。
在 github 上創建倉庫,首先你得在 github 上創建一個賬號,這個就不演示了。然后在 github 上創建一個倉庫,創建好后即可創建一個倉庫

點擊“create repository”按鈕倉庫就創建成功了。
Github 支持兩種同步方式“https”和“ssh”。
如果使用 https 很簡單基本不需要配置就可以使用,但是每次提交代碼和下載代碼時都需要輸入用戶名和密碼。
如果使用 ssh 方式就需要客戶端先生成一個密鑰對,即一個公鑰一個私鑰。然后還需要把公鑰放到 githib 的服務器上。

什么是 SSH?

SSH 為 Secure Shell(安全外殼協議)的縮寫,由 IETF 的網絡小組(Network Working Group)所制定。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議,利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。

?5.ssh密鑰的生成和配置

ssh密鑰的生成

第一步:創建 SSH Key。在用戶主目錄下,看看有沒有.ssh 目錄,如果有,再看看這個目錄下有沒有 id_rsa 和 id_rsa.pub 這兩個文件,如果有的話,直接跳過此如下命令,如果沒有的話,打開命令行,輸入如下命令:git bash,執行命令,生成公鑰和私鑰,命令: ssh-keygen -t rsa,如下:

然后我們可以根據路徑找到我們的公鑰私鑰:

ssh 密鑰配置

密鑰生成后需要在 github 上配置密鑰本地才可以順利訪問。

接著打開你的id_rsa.pub(公鑰)文件,可以用記事本打開,并把里面的內容全部復制下來,粘貼在Key的部分,然后點擊Add SSH key按鈕完成配置。

6.同步到遠程倉庫

同步到遠程倉庫可以使用 git bash。
現在,我們根據 GitHub 的提示,在本地的git_file倉庫下(D:\git_file)運行命令:

git remote add origin git@github.com:emily-xl/python_project.git
git push -u origin master 

如果出現如下錯誤:

這說明你之前已經連接過你的遠程倉庫了,我們可以執行git remote rm origin指令,再執行以上兩條指令,效果如下:

把本地庫的內容推送到遠程,使用 git push 命令,實際上是把當前分支master 推送到遠程。

之前創建倉庫的時候如果你沒有勾選“Add a README file”這個內容,那么你的倉庫里面應該是空的,由于遠程庫是空的,我們第一次推送 master 分支時,加上了 –u 參數,Git不但會把本地的 master 分支內容推送的遠程新的 master 分支,還會把本地的master 分支和遠程的master 分支關聯起來,在以后的推送或者拉取時就可以簡化命令。推送成功后,可以立刻在 github 頁面中看到遠程庫的內容已經和本地一模一樣了,上面的要輸入 github 的用戶名和密碼如下所示:

從現在起,只要本地作了提交,就可以通過如下命令:git push origin master把本地 master 分支的最新修改推送到 github 上了,現在你就擁有了真正的分布式版本庫了。

7.如何從遠程庫克隆

當我們想從GitHub上面下載某個項目到我們本地倉庫上面時,我們此時執行命令:git clone 項目的ssh地址,如下:

此時使用ls指令,就可以看到這個名叫masr的項目出現在我們當前倉庫里面了。

8.團隊協作項目

當我們想要指定某幾個人才有訪問權限并對這個項目進行修改時,我們可以進行如下操作:

輸入你的密碼:

進入界面之后點擊綠色的按鈕:

對方會接收到一封郵件,按照郵件上面的內容執行就行,隨后就可以邀請你想要的人進行創作了。

9.創建和合并分支

在版本回填退里,你已經知道,每次提交,Git 都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在 Git 里,這個分支叫主分支,即 master 分支。HEAD 嚴格來說不是指向提交,而是指向 master,master 才是指向提交的,所以,HEAD 指向的就是當前分支。

首先,我們來創建 dev?分支,然后切換到 dev 分支上。如下操作:

git checkout 命令加上 –b 參數表示創建并切換,相當于如下 2 條命令:
git branch dev
git checkout dev
git branch 查看分支,會列出所有的分支,當前分支前面會添加一個星號。

我們在 dev 分支的readme.txt文件上添加一行44444,我們先來查看下 readme.txt 內容:

接著提交(以下的dev2應是dev):

再切換回master分支,效果如下:

可以看到兩條分支上面的內容并不一樣,現在我們可以把 dev 分支上的內容合并到分支 master 上了,可以在 master 分支上,使用如下命令 git merge dev (以下dev2為dev)如下所示:

現在兩條分支上面的內容完全一樣了。

合并完后,我們可以接著刪除 dev 分支了,操作如下:

這樣就算是刪除好了。

總結創建與合并分支命令如下:
查看分支:git branch
創建分支:git branch name
切換分支:git checkout name
創建+切換分支:git checkout –b name
合并某分支到當前分支:git merge name
刪除分支:git branch –d name

10.其他

出現這種問題多半是因為你的電腦名稱時以中文命名的,打開設置修改電腦名稱即可:

然后重啟電腦就會發現亂碼沒有了。

---END

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

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

相關文章

中望3D 2026亮點速遞(1)-全新槽功能螺紋功能,減少繁瑣操作

本文為CAD芯智庫整理,未經允許請勿復制、轉載!中望3D 2026全新的槽功能,包括:(1)可快速生成多種槽形;(2)快速生成一個或多個槽;(3)支持…

2025毫米波雷達技術白皮書:智能汽車與物聯網的感知核心

隨著人工智能、物聯網(IoT)和智能汽車產業的迅猛發展,毫米波雷達技術正成為感知領域的核心驅動力。毫米波雷達憑借其高精度、全天候和強抗干擾能力,廣泛應用于智能汽車的自動駕駛、物聯網的環境感知以及工業自動化。2025年&#x…

用 React-Three-Fiber 實現雪花下落與堆積效果:從零開始的 3D 雪景模擬

在 Web3D 開發中,自然現象模擬一直是極具吸引力的主題。本文將基于 React-Three-Fiber(R3F)框架,詳解如何實現一個包含雪花下落、地面堆積的完整雪景效果。我們會從基礎粒子系統入手,逐步完善物理交互邏輯,…

從抓包GitHub Copilot認證請求,認識OAuth 2.0技術

引言 在現代開發工具中,GitHub Copilot 以智能、嵌入式的人工智能代碼補全能力著稱。作為一項涉及用戶敏感數據和付費授權的服務,其認證授權流程尤為值得技術研究。本文基于實際抓包 VS Code 中的 Copilot 登錄認證請求,系統梳理其 OAuth 2.…

Linux操作系統之線程:分頁式存儲管理

目錄 前言: 一、分頁式存儲管理 二、二級頁表的地址轉化 三、缺頁中斷 總結 前言: 我們上篇文章簡單介紹了線程的一些知識點,但是還有很多坑沒有給大家填上,包括頁表部分我們還沒為大家說明。 本篇文章我將會繼續為大家講解…

xss1-8

Level-1<script>alert()</script>基礎反射型 無任何過濾Level-2"> <script>alert()</script> <"閉合屬性&#xff1a;">用來閉合當前標簽的value屬性注入新標簽&#xff1a;閉合屬性后&#xff0c;插入獨立的<script>…

51c嵌入式~單片機~合集1

自己的原文哦~ https://blog.51cto.com/whaosoft/11897656 一、STM32的啟動模式配置與應用 三種BOOT模式 所謂啟動&#xff0c;一般來說就是指我們下好程序后&#xff0c;重啟芯片時&#xff0c;SYSCLK的第4個上升沿&#xff0c;BOOT引腳的值將被鎖存。用戶可以通過設…

Typecho分類導航欄開發指南:從基礎到高級實現

文章目錄 Typecho分類導航欄深度解析:父分類與子分類的完美呈現 引言 一、Typecho分類系統基礎 1.1 Typecho分類結構 1.2 獲取分類數據的基本方法 二、基礎分類導航輸出 2.1 簡單的平鋪式導航 2.2 帶計數器的分類導航 三、層級分類導航實現 3.1 遞歸輸出父子分類 3.2 使用Type…

C++異步編程工具 async promise-future packaged_task等

深入探討 C11 中引入的四個核心異步編程工具&#xff1a;std::async, std::future, std::promise, 和 std::packaged_task。它們共同構成了 C 現代并發編程的基礎。 為了更好地理解&#xff0c;我們可以使用一個餐廳點餐的類比&#xff1a; std::future (取餐憑證)&#xff1…

Linux-網絡管理

網絡管理1. 網絡基礎1.1 TCP/IP 協議棧&#xff08;四層模型&#xff09;1.2 網絡設備配置與基礎概念1.3 網絡接口命名規則1.4 網絡配置文件位置2. 常用網絡配置命令2.1 查看網絡接口信息2.2 配置 IP 地址2.3 啟用/禁用網卡2.4 修改網卡 MAC 地址2.5 配置網卡的 MTU&#xff08…

Linux鎖的概念及線程同步

目錄 1.常見鎖概念 死鎖 死鎖四個必要條件 避免死鎖 避免死鎖算法 2. Linux線程同步 條件變量 同步概念與競態條件 條件變量函數 初始化 銷毀 等待條件滿足 喚醒等待 簡單案例&#xff1a; 條件變量使用規范 1.常見鎖概念 死鎖 死鎖是指在一組進程中的各個進程均占有不會釋放的…

docker更換國內加速器-更換華為加速器2025-717親測可用docker 拉取鏡像出錯

[rootlocalhost ~]# docker pull nginx Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)報錯原因就是…

Unity VR多人手術模擬恢復2:客戶端移動同步問題分析與解決方案

Unity VR多人手術模擬恢復2&#xff1a;客戶端移動同步問題分析與解決方案 &#x1f3af; 問題背景 在開發基于Unity Mirror網絡架構的VR多人手術模擬系統時&#xff0c;我們遇到了一個復雜的客戶端移動同步問題&#xff1a; 主要操作者&#xff08;第一個客戶端&#xff09;&a…

uni-app開發的頁面跳轉全局加載中

uni-app開發的頁面跳轉全局加載中首先需要下載插件創建加載中頁面組件app.vue頁面中監聽跳轉首先需要下載插件 https://ext.dcloud.net.cn/plugin?id20613 創建加載中頁面組件 <!-- 全局自定義加載中 --> <template><view v-if"visible" class&qu…

XXE漏洞4-XXE無回顯文件讀取-PentesterLab靶場搭建

一.PentesterLab靶場搭建(實驗環境搭建)介紹&#xff1a;PentesterLab 是一個全面的漏洞演示平臺&#xff0c;但是它是收費的&#xff0c;我們這里只使用它的 xxe 演示案例。安裝 PentesterLab 虛擬機:下載好鏡像&#xff1a; 1.打開VMware新建虛擬機&#xff0c;選擇典型就行。…

【機器學習】圖片分類中增強常用方式詳解以及效果展示

圖片增強常用方式詳解 引言 圖片數據的質量和多樣性對模型的訓練效果起著至關重要的作用。然而&#xff0c;實際獲取的圖片數據往往存在數量不足、分布不均衡等問題。圖片增強技術應運而生&#xff0c;它通過對原始圖片進行一系列變換&#xff0c;生成更多具有多樣性的圖片&…

【URL 轉換為PDF】HTML轉換為PDF

1、方法1 pdfkit 安裝依賴 # 安裝 wkhtmltopdf&#xff08;系統級&#xff09; # Ubuntu/Debian sudo apt install wkhtmltopdf# macOS brew install wkhtmltopdf# Windows 下載安裝&#xff1a;https://wkhtmltopdf.org/downloads.html# 安裝 Python 庫 pip install pdfkitimp…

單鏈表的定義、插入和刪除

一、定義一個單鏈表 struct LNode{ //定義單鏈表節點類型ElemType data; //存放節點數據元素struct LNode *next; //指針指向下一個結點 }; //增加一個新節點&#xff1a;在內存中申請一個結點所需空間&#xff0c;并用指針p指向這個結點 struct LNode * p (struc…

Nextjs官方文檔異疑惑

第一個區別&#xff1a;不同的頁面對應的路由器設定&#xff01; 繼續用 app 路由器&#xff08;推薦&#xff0c;Next.js 未來主流&#xff09; 路由規則&#xff1a;app 目錄下&#xff0c;文件夾 page.tsx 對應路由。例如&#xff1a; app/page.tsx → 對應 / 路由&#xf…

突破AI模型訪問的“光標牢籠”:長上下文處理與智能環境隔離實戰

> 當AI模型面對浩瀚文檔卻只能處理零星片段,當關鍵信息散落各處而模型“視而不見”,我們該如何打破這堵無形的墻? 在自然語言處理領域,**輸入長度限制**(常被稱為“光標區域限制”)如同一個無形的牢籠,嚴重制約了大型語言模型(LLM)在真實場景中的應用潛力。無論是分…