git的安裝、使用

文章目錄

    • 安裝git
    • git學習網站
    • git初始配置
      • 具體配置信息
    • 新建版本庫(倉庫)
    • git的工作區域和文件狀態
      • 工作區域
      • 文件狀態
        • git文件提交的基礎指令
    • git基礎指令
      • 1. 版本提交
      • 2. 分支創建
      • 3. 分支切換
      • 4. 分支合并
        • (1) git merge
        • (2) git rebase
      • 5. 在git的提交樹上移動
        • (1) HEAD
        • (2) 分離的HEAD
        • (3) 相對引用
        • (4) 強制修改分支位置
        • (5) 撤銷變更
      • 6. 整理提交記錄
      • 7. 交互式rebase
      • 8. 設定里程碑
      • 9. 添加標簽
    • 綁定遠程倉庫
    • 克隆遠程倉庫
    • 同步遠程倉庫
    • 使用遠程倉庫覆蓋本地倉庫

安裝git

Windows:Git安裝
Linux(Ubuntu):

sudo apt install git

git學習網站

Git教程

git初始配置

git config --global user.name "Jasper Yang"

保存用戶名和密碼,就不用每次重復輸入:

git config --global credential.helper store

查看git的配置信息:

git config --global --list

具體配置信息

  • 省略(Local):本地配置,只對本地倉庫有效
  • –global:全局配置,對所有倉庫有效
  • –system:系統配置,對所有用戶生效

usr.name就是說配置的是用戶名。
當需要配置郵箱則改一點就行:

git config --global user.email geekhall.cn@gmail.com

后面的就是郵箱地址。

新建版本庫(倉庫)

  • 創建倉庫
    git init
    
    上面的方法是本地創建倉庫,我們也能使用git clone來克隆一個本就存在的倉庫。

git的工作區域和文件狀態

工作區域

  1. 工作區(.git所在的目錄):也就是電腦上的本地文件
  2. 暫存區(.it/index):用于保存即將提交到Git倉庫的修改內容
  3. 本地倉庫(.git/objects):通過git init創建的倉庫

文件狀態

  • 未跟蹤(untrack)
  • 未修改(Unmodified)
  • 已修改(Modified)
  • 已暫存(Staged)
    在這里插入圖片描述

上圖中展示了各種指令的作用,因為這里也就不再贅述了。

git文件提交的基礎指令
git status        # 查看倉庫的狀態
git add           # 添加到暫存區
git rm --cached   # 將已經添加到暫存區的文件取出
git commit (-m)  # 提交# -m用于指定文件的備注信息等# 這個信息會被提交
git log           # 查看提交的日志信息
git reset         # 用于回退版本

git基礎指令

1. 版本提交

git commit

該命令用于在當前所處的分支上提交新版本。
但是git不會盲目得將所有的內容全部重新提交,它會與上一個版本進行比較,如果有更新,就會在其基礎上進行更新。

2. 分支創建

git branch <name>

該命令用于創建一個分支,該分支的根節點是創建分支時所處的根節點。

3. 分支切換

git checkout <name>

先前我們已經使用了git branch對分支進行了創建,現在我們就可以使用git checkout進行分支切換了,因為git commit等操作是對當前分支進行操作。

4. 分支合并

(1) git merge
git merge

這里用圖來理解下:
在這里插入圖片描述
現在有兩個分支,main和bugFix,現在我們根據“星號”的位置,可知現在我們處于main分支上。
此時我們使用git merge bugFix
在這里插入圖片描述

(2) git rebase
git rebase

git rebase其實就是取出一系列的提交記錄,“復制”它們,然后在另一個地方逐個放下去。

在這里插入圖片描述
現在我們處于bugFix分支上,bugFix分支是基于C1的修改,main所處的C2分支也是基于C1的修改,現在使用git rebase main對分支進行合并:
在這里插入圖片描述

需要注意的是:C3節點并沒有消失
坦白點說:當你在bugFix分支上運行git rebase main命令時,實際上是將bugFix分支上的提交記錄復制并重新應用到main分支上。這意味著Git會先找到bugFix分支與main分支的最近共同祖先,然后將bugFix分支自該祖先以來的提交記錄依次復制并在main分支上重新應用。這樣可以使得bugFix分支的提交歷史與main分支保持在一條直線上,同時整合bugFix分支的改動到main分支上
所以我理解這個語句為:將根節點重新設定為main所指向的節點

5. 在git的提交樹上移動

(1) HEAD

HEAD是當先所在分支的符號引用——也就是指向你正在其基礎上進行工作的提交記錄。
HEAD總是指向當前分支上的最后一次提交記錄
HEAD在通常情況下是指向分支名的。

(2) 分離的HEAD

分離的HEAD指向了某個具體的提交記錄而不是分支名
在教程中使用的checkout進行切換,切換的目標是對應節點的哈希值
節點的哈希值,我們能夠使用git log進行查看:

git log
(3) 相對引用

git中,我們能通過相對引用,從一個易于記憶的節點或者HEAD進行計算:

  • ^:向上移動一個提交記錄
  • ~<num>:向上移動num個提交記錄,例如:~3

這里給出兩個示例:

HEAD^^
main~3
(4) 強制修改分支位置
git branch -f main HEAD~3

上面的命令會將main分支強制指向HEAD的第3級parent提交。

(5) 撤銷變更

Git中撤銷變更的方式很多,主要的命令有兩個:git resetgit revert,這兩個是有區別的。
reset在本地好用,就是版本回退,但是如果是在分布式協作的時候就需要使用revert了,它不是直接回退,而是將更新一個版本,這個版本與需要回退的版本一樣。

git reset
git revert

需要配合參數使用,表示需要回退多少個版本:

git reset HEAD~1

6. 整理提交記錄

git cherry-pick

該指令用于將節點復制到目前分支上。
這跟之前的rebase有點類似。
cherry-pick適用于知道節點hash值的情況

7. 交互式rebase

交互式rebase其實就是rebase使用參數"-interactive",縮寫為"-i",其余與之前rebase的一樣。

git rebase -i main~4

它會將main~4的一系列指令進行一個復制操作,然后它會彈出一個UI對話框,其中可以選擇拖拽更換節點位置,或者使用pick對節點進行一個“刪除”,這樣它不會對該節點進行復制。

8. 設定里程碑

里程碑固定指向某個節點,因此也叫做里程碑。

git tag version1 C1

這會將節點C1命名為version1,那么現在version1就表示C1。

9. 添加標簽

這個標簽就是對該節點的描述

git describe <ref>

其中ref可以是任意可以表示該節點的方法,不管是tag、hash值和HEAD都行。
使用后會有一個輸出,格式如下:

<tag>_<numCommits>_g<hash>
  • tag:離ref最近的標簽
  • numCommits:ref和tag相距多少個commit
  • hash:給定的ref的hash值,若是ref有標簽,則輸出標簽

綁定遠程倉庫

我們可以使用clone指令和remote指令綁定遠程倉庫,例如在Github和Gitee創建的。

git clone <url>git remote <url>

這兩個指令相對來說比較復雜,建議看看官方的git教程。

克隆遠程倉庫

我們常常把代碼托管在遠程倉庫,當我們想要拉取自己或者別人的遠程倉庫的時候,我們通常會使用clone指令

git clone <url>

這樣就能將倉庫中的所有文件全部完整的拉取下來,包括原本的分支情況和標簽等等信息。
==這些信息都會存儲在該文件夾的**.git**中。

同步遠程倉庫

當本地倉庫的內容發生了修改,我們想要將修改后的內容推送到遠程倉庫中,這時候,我們就需要將我們已經修改好的內容進行一個推送(push),因為是將本地已經修改好的內容推送,理所應當的是這個被修改了的文件在本地應該處于commit狀態,然后我們就能使用git push進行同步了。

git push [-option]

使用遠程倉庫覆蓋本地倉庫

首先此時我們先要確定本地倉庫已經和遠程倉庫連接了:

git remote -x

使用這個指令可以看到遠程倉庫源。
然后將遠程倉庫的內容拉取到本地:

git fetch origin

但是,這樣拉取到本地的內容不會自動合并,于是我們需要合并代碼:

  1. 首先切換到想要進行覆蓋的遠程分支:
    git checkout <remote-branch-name>
    
    這樣,工作區就被切換到需要進行覆蓋的遠程分支了。
  2. 對本地倉庫進行重設:
    git reset --hard origin/<remote-branch-name>
    
  3. 然后將本地進行覆蓋后的內容推送到遠程倉庫:
    git push origin <remote-branch-name> --force
    
    這段代碼會會強制推送本地倉庫內容到遠程倉庫,覆蓋遠程分支

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

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

相關文章

Ps:銳化工具

銳化工具 Sharpen Tool可用于增強圖像局部區域的對比度&#xff0c;從而提高圖像的清晰度和細節&#xff0c;特別適用于提升照片的邊緣定義和紋理細節。 快捷鍵&#xff1a;無 ◆ ◆ ◆ 常用操作方法與技巧 1、如果直接在像素圖像上使用銳化工具&#xff0c;可嘗試使用“漸隱…

怎么優雅地訪問ChatGPT

ChatGPT&#xff0c;這顆璀璨的智能結晶&#xff0c;在2022年歲末之際&#xff0c;由OpenAI實驗室傾力鑄就&#xff0c;猶如夜空中躍動的智慧星辰&#xff0c;點亮了人工智能領域的新紀元。猶如汪洋中的一座燈塔&#xff0c;ChatGPT以其獨特的智慧光輝引人注目&#xff0c;然而…

Linux:kubernetes(k8s)node節點加入master主節點(3)

Linux&#xff1a;kubernetes&#xff08;k8s&#xff09;搭建mater節點&#xff08;kubeadm&#xff0c;kubectl&#xff0c;kubelet&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136415575?spm1001.2014.3001.5502 我在上一章部署好了主節點&…

前端打包部署(黑馬學習筆記)

我們的前端工程開發好了&#xff0c;但是我們需要發布&#xff0c;那么如何發布呢&#xff1f;主要分為2步&#xff1a; 1.前端工程打包 2.通過nginx服務器發布前端工程 前端工程打包 接下來我們先來對前端工程進行打包 我們直接通過VS Code的NPM腳本中提供的build按鈕來完…

從下一代車規MCU厘清存儲器的發展(2)

目錄 1.概述 2.MCU大廠的選擇 2.1 瑞薩自研STT-MRAM 2.2 ST專注PCM 2.3 英飛凌和臺積電聯手RRAM 2.4 NXP如何計劃eNVM 3.小結 1.概述 上篇文章&#xff0c;我們簡述了當前主流的存儲器技術&#xff0c;現在我們來講講各大MCU大廠的技術選擇 2.MCU大廠的選擇 瑞薩日…

redis的RDB和AOF

Redis是一種高性能的鍵值對存儲系統&#xff0c;它支持多種類型的數據結構&#xff0c;如字符串、列表、集合、哈希表、有序集合等。Redis提供了兩種不同的持久化機制來確保數據的安全性&#xff1a;RDB&#xff08;Redis Database&#xff09;和AOF&#xff08;Append Only Fi…

Tomcat布署及優化二-----Mysql和虛擬機

1.Mysql搭Blog 1.1下載安裝包 看一下tomcat狀態 1.2放到指定目錄 cp jpress-v3.2.1.war /usr/local/tomcat/webapps/ cd /usr/local/tomcat/webapps/ 1.3路徑優化 ln -s jpress-v3.2.1 jpress 看jpress權限 1.4生成配置文件 cat >/etc/yum.repos.d/mysql.repo <<E…

掘根寶典之C語言指針詳解

目錄 什么是指針&#xff1f; 與指針相關的運算符 指針類型的意義 指針的大小 初始化 將指針直接指向一個已經存在的變量或內存地址&#xff1a; 使用malloc函數動態分配內存&#xff0c;并將指針指向新分配的內存&#xff1a; 使用calloc函數動態分配內存&#xff0c;并…

Javascript:常量與數據類型

一、前言 介紹完變量之后我們來對常量進行了解一番&#xff0c;關于常量我們需要知道些什么呢&#xff1f; 二、正文 1.常量的基本使用 使用const聲明的變量稱為常量&#xff0c;當某個變量的字面量無需改動的時候就能夠用到常量。 //聲明一個常量 const G 9.8 //輸出這個常量…

您的計算機已被pings勒索病毒感染?恢復您的數據的方法在這里!

導言&#xff1a; 在數字時代&#xff0c;數據是企業和個人生活中不可或缺的一部分。然而&#xff0c;隨著勒索病毒的不斷進化和傳播&#xff0c;我們的數據面臨著前所未有的威脅。其中&#xff0c;.pings 勒索病毒是最新一輪威脅之一&#xff0c;它以其獨特的加密算法和無情的…

leetcode-字符串中的單詞數

434. 字符串中的單詞數 題解&#xff1a; 這個問題可以通過遍歷字符串&#xff0c;當遇到非空格字符時&#xff0c;判斷其前一個字符是否為空格&#xff0c;如果是&#xff0c;則說明這是一個新的單詞的開始&#xff0c;計數器加一。最后返回計數器的值即可。 class Solutio…

【Redis | 第一篇】快速了解Redis

文章目錄 1.快速了解Redis1.1簡介1.2與其他key-value存儲的不同處1.3Redis安裝——Windows環境1.3.1下載redis1.3.2啟動redis1.3.3進入redis客戶端1.3.4修改配置 1.4Redis安裝——Linux環境1.4.1安裝命令1.4.2啟動redis1.4.3進入redis客戶端 1.5配置修改1.6小結 1.快速了解Redi…

MyBatis 學習(七)之 緩存

目錄 1 MyBatis 緩存介紹 2 一級緩存 3 二級緩存 3.1 二級緩存介紹 3.2 二級緩存配置 3.3 二級緩存測試 4 參考文檔 1 MyBatis 緩存介紹 MyBatis 緩存是 MyBatis 中的一個重要特性&#xff0c;用于提高數據庫查詢的性能。MyBatis 提供了一級緩存和二級緩存兩種類型的緩存…

Git與GitHub:解鎖版本控制的魔法盒子

?? 歡迎大家來訪Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭?&#xff5e;?? &#x1f31f;&#x1f31f; 歡迎各位親愛的讀者&#xff0c;感謝你們抽出寶貴的時間來閱讀我的文章。 我是Srlua&#xff0c;在這里我會分享我的知識和經驗。&#x…

cetos7 Docker 安裝 gitlab

一、gitlab 簡單介紹和安裝要求 官方文檔&#xff1a;https://docs.gitlab.cn/jh/install/docker.html 1.1、gitlab 介紹 gitLab 是一個用于代碼倉庫管理系統的開源項目&#xff0c;使用git作為代碼管理工具&#xff0c;并在此基礎上搭建起來的Web服務平臺&#xff0c;通過該平…

(六)Dropout抑制過擬合與超參數的選擇--九五小龐

過擬合 即模型在訓練集上表現的很好&#xff0c;但是在測試集上效果卻很差。也就是說&#xff0c;在已知的數據集合中非常好&#xff0c;再添加一些新數據進來效果就會差很多 欠擬合 即模型在訓練集上表現的效果差&#xff0c;沒有充分利用數據&#xff0c;預測準確率很低&a…

笨辦法學 Python3 第五版(預覽)(一)

原文&#xff1a;Learn Python the Hard Way, 5th Edition (Early Release) 譯者&#xff1a;飛龍 協議&#xff1a;CC BY-NC-SA 4.0 模塊 1&#xff1a;Python 入門 練習 0&#xff1a;準備工作 這個練習沒有代碼。這只是你完成的練習&#xff0c;讓你的計算機運行 Python。…

Unity 游戲設計模式:單例模式

本文由 簡悅 SimpRead 轉碼&#xff0c; 原文地址 mp.weixin.qq.com 單例模式 在 C# 游戲設計中&#xff0c;單例模式是一種常見的設計模式&#xff0c;它的主要目的是確保一個類只有一個實例&#xff0c;并提供一個全局訪問點。單例模式在游戲開發中具有以下幾個作用&#xf…

Matlab 機器人工具箱 Link類

文章目錄 1 Link類1.1 機械臂Link類1.2 構造函數1.3 信息/顯示方法1.4 轉換方法1.5 操作方法1.6 測試方法1.7 重載操作1.8 屬性(讀/寫)1.9 例子2 Link.Link2.1 創建機器人連桿對象2.2 OPTIONS2.3 注意2.4 舊語法2.5 例子3 Link的其他函數3.1 Link.A3.2 Link.char3.3 Link.displ…

unity學習(44)——選擇角色菜單——順利收到服務器的數據

本節的思路參考自&#xff0c;內容并不相同&#xff1a;13ARPG網絡游戲編程實踐&#xff08;十三&#xff09;&#xff1a;角色選擇UI及創建面板制作&#xff08;四&#xff09;_嗶哩嗶哩_bilibili 現在的代碼寫在MessageManager.cs中&#xff0c;函數名UserHandler(是從OnMess…