Git遠程操作與標簽管理

目錄

1.理解分布式版本控制系統

2.遠程倉庫

3.新建遠程倉庫

4.克隆遠程倉庫

5.向遠程倉庫推送?

6.拉取遠程倉庫

7.配置Git

7.1.忽略特殊文件

7.2.給命令配置別名

8.標簽管理

8.1.理解標簽

8.2.創建標簽

8.3.操作標簽 ?


1.理解分布式版本控制系統

Git是目前世界上最先進的分布式版本控制系統(沒有之一)。那什么是分布式版本控制系統?我們看看Git與SVN的主要區別就明白了

  • SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,而干活的時候,用的都是自己的電腦,所以首先要從中央服務器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服務器。集中式版本控制系統是必須聯網才能工作,如果在局域網還可以,帶寬夠大,速度夠快,如果在互聯網下,如果網速慢的話,就納悶了。
  • Git是分布式版本控制系統,那么它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,這樣,工作的時候就不需要聯網了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

分布式相比于集中式的最大區別在于開發者可以提交到本地,每個開發者通過克隆(git clone),在本地機器上拷貝一個完整的Git倉庫


我們?前所說的所有內容(?作區,暫存區,版本庫等等),都是在本地!也就是在你的筆記本或者 計算機上。?我們的Git其實是分布式版本控制系統!什么意思呢? 可以簡單理解為,我們每個?的電腦上都是?個完整的版本庫,這樣你?作的時候,就不需要聯? 了,因為版本庫就在你??的電腦上。

既然每個?電腦上都有?個完整的版本庫,那多個?如何協作 呢???說你在??電腦上改了?件A,你的同事也在他的電腦上改了?件A,這時,你們倆之間只需 把各?的修改推送給對?,就可以互相看到對?的修改了。

分布式版本控制系統的安全性要?很多,因為每個?電腦?都有完整的版本庫,某?個?的電腦壞掉 了不要緊,隨便從其他?那?復制?個就可以了。

在實際使?分布式版本控制系統的時候,其實很少在兩?之間的電腦上推送版本庫的修改,因為可能 你們倆不在?個局域?內,兩臺電腦互相訪問不了。也可能今天你的同事病了,他的電腦壓根沒有開機。

因此,分布式版本控制系統通常也有?臺充當“中央服務器”的電腦,但這個服務器的作?僅僅 是?來?便“交換”?家的修改,沒有它?家也?樣?活,只是交換修改不?便?已。

有了這個“中央服務器”的電腦,這樣就不怕本地出現什么故障了(?如運?差,硬盤壞了,上?的所有東西全部 丟失,包括git的所有內容)

2.遠程倉庫

Git 是分布式版本控制系統,同?個Git倉庫,可以分布到不同的機器上。怎么分布呢?

最早,肯定只有?臺機器有?個原始版本庫,此后,別的機器可以“克隆”這個原始版本庫,?且每臺機器的版本庫其實都是?樣的,并沒有主次之分。

你肯定會想,?少需要兩臺機器才能玩遠程庫不是?但是我只有?臺電腦,怎么玩?

其實?臺電腦上也是可以克隆多個版本庫的,只要不在同?個?錄下。不過,現實?活中是不會有? 這么傻的在?臺電腦上搞?個遠程庫玩,因為?臺電腦上搞?個遠程庫完全沒有意義,?且硬盤掛了會導致所有庫都掛掉,所以我也不告訴你在?臺電腦上怎么克隆多個倉庫。

實際情況往往是這樣,找?臺電腦充當服務器的??,每天24?時開機,其他每個?都從這個“服務 器”倉庫克隆?份到??的電腦上,并且各?把各?的提交推送到服務器倉庫?,也從服務器倉庫中 拉取別?的提交。 完全可以??搭建?臺運?Git的服務器,不過現階段,為了學Git先搭個服務器絕對是?題?作。

好在這個世界上有個叫GitHub的神奇的?站,從名字就可以看出,這個?站就是提供Git倉庫托管服務 的,所以,只要注冊?個GitHub賬號,就可以免費獲得Git遠程倉庫。 github 是國外的?站,速度?較慢,我們課堂上同統?采?碼云(也就是gitee)來托管代碼。

下來,我們從零開始, 使??下碼云遠程倉庫。

gitee官網:工作臺 - Gitee.com

3.新建遠程倉庫

進去之后我們看左上角,點擊加號,選擇新建倉庫

按照下圖填寫信息?

然后就創建成功了

創建成功后,我們可以對遠程倉庫進??個基本的設置:開源or私有

?我們在右邊往下滑,就能看到

我們選擇開源

從創建好的遠程倉庫中我們便能看到,之前在本地學習過的分?,也存在于遠程倉庫中并被管理起來 了。剛創建的倉庫有且只有?個默認的master分?。

4.克隆遠程倉庫

克隆/下載遠端倉庫到本地,需要使? git clone 命令,后?跟上我們的遠端倉庫的鏈接,遠端倉庫 的鏈接可以從倉庫中找到:選擇“克隆/下載”獲取遠程倉庫鏈接:

SSH協議和HTTPS協議是Git最常使?的兩種數據傳輸協議。SSH協議使?了公鑰加密和公鑰登陸機制,體現了其實?性和安全性,使?此協議需要將我們的公鑰放上服務器,由Git服務器進?管理。使?HTTPS?式時,沒有要求,可以直接克隆下來。

使?HTTPS?式大概就是下面這樣子:

hyb@139-159-150-152:~$ git clone https://gitee.com/hyb91/git_teaching.gitCloning into 'git_teaching'...Username for 'https://gitee.com': hyb91Password for 'https://hyb91@gitee.com': 
remote: Enumerating objects: 4, done.remote: Counting objects: 100% (4/4), done.remote: Compressing objects: 100% (4/4), done.remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0Unpacking objects: 100% (4/4), 1.80 KiB | 1.80 MiB/s, done.hyb@139-159-150-152:~$ lsgitcode  git_teaching hyb@139-159-150-152:~$ ls git_teaching/README.en.md  README.md
  • 使?SSH?式:?

我們還是看克隆/下載

但是我們這次選擇SSH里面的?

?

使?SSH?式克隆倉庫,由于我們沒有添加公鑰到遠端庫中,服務器拒絕了我們的clone鏈接。需要 我們設置?下: 第?步:創建SSHKey。

在??主?錄下,看看有沒有.ssh?錄,

如果有,再看看這個?錄下有沒有 id_rsa 和 id_rsa.pub 這兩個?件,如果已經有了,可直接跳到下?步。

如果沒有,需要創建 SSH Key:

# 注意要輸???的郵箱,然后?路回?,使?默認值即可
ssh-keygen -t rsa -C "自己的郵箱"   

我們一直按回車?

?順利的話,可以在??主?錄?找到 .ssh ?錄,??有 id_rsa 和 id_rsa.pub 兩個?件,這兩個就是SSH Key的秘鑰對, id_rsa 是私鑰,不能泄露出去, id_rsa.pub 是公鑰,可以放?地告 訴任何?。

我們輸入下面這個

cat ~/.ssh/id_rsa.pub

獲取公鑰,復制下來?


第?步:添加??的公鑰到遠端倉庫。

點擊 ssh 公鑰 選項,進?設置:

隨便取一個公鑰名字,然后把公鑰復制下來

?點擊確認后,需要對你進?認證,輸?你的賬號密碼即可。

?此,我們的準備?作全部做完,歡快的 clone吧。

done, 成功!如果有多個?協作開發,GitHub/Gitee允許添加多個公鑰,只要把每個?的電腦上的 Key都添加到GitHub/Gitee,就可以在每臺電腦上往GitHub/Gitee上提交推送了。

????????當我們從遠程倉庫克隆后,實際上Git會?動把本地的master分?和遠程的master分?對應起來, 并且,遠程倉庫的默認名稱是 origin 。在本地我們可以使? git remote 命令,來查看遠程庫的信息,如:?

或者,?git remote -v 顯?更詳細的信息:

上?顯?了可以抓取和推送的origin的地址。如果沒有推送權限,就看不到push的地址。推送是什么 意思呢,我們繼續往下看。?

5.向遠程倉庫推送?

本地已經clone 成功遠程倉庫后,我們便可以向倉庫中提交內容,例如新增?個?file.txt ?件:

????????提交時要注意,如果我們之前設置過全局的name和e-mail,這兩項配置需要和gitee上配置的?? 名和郵箱?致,否則會出錯。或者從來沒有設置過全局的name和e-mail,那么我們第?次提交時也會報錯。

????????這就需要我們重新配置下了,同樣要注意需要和gitee上配置的??名和郵箱?致。如何配置 已講過,在這?就不再贅述。 到這?我們已經將內容提交?本地倉庫中,如何將本地倉庫的內容推送?遠程倉庫呢,需要使? git push 命令, 該命令?于將本地的分?版本上傳到遠程并合并,命令格式如下:?

  • git push < 遠程主機名 > < 本地分?名 >:< 遠程分?名 >
  • #如果本地分?名與遠程分?名相同,則可以省略冒號: git push < 遠程主機名 > < 本地分?名 >

此時我們要將本地的master分?推送到origin主機的master分?,則可以:

推送成功!這?由于我們使?的是SSH協議,是不?每?次推送都輸?密碼的,?便了我們的推送操 作。如果你使?的是HTTPS協議,有個?煩地?就是每次推送都必須輸??令。

接下來,看看碼云遠端:

代碼已經被推送?遠端了:

6.拉取遠程倉庫

在gitee上點擊README.md?件并在線修改它:

此時,遠程倉庫是要領先于本地倉庫?個版本,為了使本地倉庫保持最新的版本,我們需要拉取下遠 端代碼,并合并到本地。Git提供了 git pull 命令,該命令?于從遠程獲取代碼并合并本地的版 本。格式如下:

  • git pull < 遠程主機名 > < 遠 程分?名 >:< 本地分?名 >
  • # 如果遠程分?是與當前分?合并,則冒號后?的部分可以省略。
  • git pull < 遠程主機名 > < 遠 程分?名 >

使??下:

?

現在就沒問題了

7.配置Git

7.1.忽略特殊文件

在?常開發中,我們有些?件不想或者不應該提交到遠端,?如保存了數據庫密碼的配置?件,那怎 么讓Git知道呢?

在Git?作區的根?錄下創建?個特殊的.gitignore ?件,然后把要忽略的?件名填進去,Git就會?動忽略這些?件了。

不需要從頭寫 .gitignore ?件,gitee在創建倉庫時就可以為我們?成,不過需要我們主動勾選? 下:

?如果當時沒有選擇這個選擇,在?作區創建?個也是可以的。?論哪種?式,最終都可以得到?個完 整的 .gitignore ?件,例如我們想忽略以 .so 和 .ini 結尾所有?件,.gitignore ?件的內容 如下:

# 省略選擇模本的內容...# My configurations:*.ini*.so

?在 .gitignore ?件中也可以指定某個確定的?件。

最后?步就是把 .gitignore 也提交到遠端,就完成了:

接著我們就來驗證?下.gitignore?件的能?,在?作區新增兩個?件 a.so b.ini :

檢驗.gitignore 的標準就是 git status 命令是不是說 working tree clean 。我們發現Git 并沒有提示在工作區中有文件新增,果然.gitignore生效了!

但有些時候,你就是想添加一個文件到 Git,但由于這個文件被.gitignore 忽略了,根本添加不了,那么可以用-f強制添加:

 git add -f [filename]

或者你發現,可能是.gitignore寫得有問題,需要找出來到底哪個規則寫錯了,比如說 a.so 文件是要被添加的,可以用 git check-ignore命令檢查:


Git 會告訴我們,.gitignore 的第2行規則忽略了該文件,于是我們就可以知道應該修訂哪個規則
還有些時候,當我們編寫了規則排除了部分文件時,例如:

# 排除所有.開頭的隱藏文件:
.*

但是我們發現.*這個規則把.gitignore 也排除了。

雖然可以用 git add -f 強制添加進去但有強迫癥的童鞋還是希望不要破壞.gitignore 規則,這個時候,可以添加一條例外規則:

#排除所有.開頭的隱藏文件:
# 不排除.gitignore
!.gitignore

把指定文件排除在.gitignore規則外的寫法就是!+文件名,所以,只需把例外文件添加進去即可

7.2.給命令配置別名

在我們使用 Git期間,有些命令敲的時候著實讓人頭疼(太長了。。),幸運的是,git支持對命令進行簡化!
舉個例子,將 git status簡化為 git st,對應的命令為:

git config --global alias.st status

--global 參數是全局參數,也就是這些命令在這臺電腦的所有Git倉庫下都有用。如果不加,那只針對當前的倉庫起作用。

好了,現在敲 git st 看看效果:

再來配置?個 git last ,讓其顯?最后?次提交信息:

git config --global alias.last 'log -1'

不過,我個?還是不推薦?家現在去使?他,等?家?作了,再去簡化??的?作吧,?前所有的命 令都要?動完成,盡快適應Git。?

8.標簽管理

8.1.理解標簽

標簽 tag ,可以簡單的理解為是對某次 commit 的一個標識,相當于起了一個別名。

例如,在項目發布某個版本的時候,針對最后一次commit 起一個 v1.0 這樣的標簽來標識里程碑的意義。

這有什么用呢?

相較于難以記住的 commit id, tag 很好的解決這個問題,因為 tag 一定要給-個讓人容易記住,且有意義的名字。當我們需要回退到某個重要版本時,直接使用標簽就能很快定位到。

8.2.創建標簽

在Git中打標簽非常簡單,首先,切換到需要打標簽的分支上

然后,敲命令 ?git tag [name] 就可以打?個新標簽:

可以?命令 git tag 查看所有標簽:

默認標簽是打在最新提交的 commit 上的。那如何在指定的commit上打標簽呢?

?法是找到歷史提交的commit? id,然后打上就可以了,?例如下:

注意,標簽不是按時間順序列出,而是按字母排序的。

可以用 git show [tag name]查看標簽信息。?

Git 還提供可以創建帶有說明的標簽,?-a指定標簽名,-m指定說明?字,格式為:

git tag -a [name] -m "XXX" [commit_id]

?另外,打完標簽之后,使? tree .git 命令查看?下你的本地庫有什么變化,肯定能幫助你理解!

?我們發現refs里面多了tags這個目錄

8.3.操作標簽 ?

如果標簽打錯了,也可以刪除:

因為創建的標簽都只存儲在本地,不會?動推送到遠程。所以,打錯的標簽可以在本地安全刪除。

如果要推送某個標簽到遠程,使?命令 git push origin <tagname>

我們回gitee上面看看?

我們點進去看看

?很好!

當然,如果你本地有很多標簽,也可以?次性的全部推送到遠端:

git push origin --tags

這個我們就不演示了

如果標簽已經推送到遠程,要刪除遠程標簽就?煩?點,先從本地刪除:

然后,從遠程刪除。刪除命令也是push,但是格式如下:

注意v1.0是在.git/refs/tags/目錄里的

?我們在gitee上面看也確實是刪除了?

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

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

相關文章

Vue3:component(組件:uniapp版本)

目錄 一、基本概述二、基本使用(父傳子)三、插槽四、子傳父 一、基本概述 在項目的開發過程中&#xff0c;頁面上井場會出現一些通用的內容&#xff0c;例如頭部的導航欄&#xff0c;如果我們每一個頁面都去寫一遍&#xff0c;那實在是太繁瑣了&#xff0c;所以&#xff0c;我…

C#語言實現PDF轉Excel

實現效果 第三方庫 ClosedXML iTextSharp 實現源碼 using System.Text; using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser; using System.Text.RegularExpressions; using ClosedXML.Excel;namespace PdfToExcel_winform {public partial class MainForm : For…

如何將IDP映射屬性添加,到accountToken中 方便項目獲取登錄人信息

? 目標 你想要&#xff1a; 用戶通過 IdP 登錄&#xff08;SAML 或 OAuth2&#xff09;Keycloak 自動將 IdP 返回的屬性&#xff08;如&#xff1a;email、name、role 等&#xff09;映射到用戶賬戶中并把這些屬性加入到用戶登錄返回的 Access Token 中&#xff0c;供業務系…

JSON-RPC遠程控制

文章目錄 &#x1f310; 一、什么是 JSON-RPC&#xff1f;&#x1f4ec; 二、通信過程1?? 客戶端發起請求2?? 服務端處理請求&#xff0c;調用方法&#xff0c;返回結果 &#x1f4d1; 三、重要字段說明&#x1f6e0;? 四、核心函數與概念&#xff08;結合你的代碼&#x…

芝法醬躺平攻略(21)——kafka安裝和使用

本節內容比較初級&#xff0c;故接著躺平攻略寫 一、官網的下載 1.1 下載解壓 首先&#xff0c;去官網下載jar包&#xff0c;放進linux中&#xff0c;解壓到對應位置。 我的位置放在/WORK/MIDDLEWARE/kafka/4.0 1.2 常見配置 # 每個topic默認的分片數 num.properties4 # 數…

AutoSAR從概念到實踐系列之MCAL篇(二)——Mcu模塊配置及代碼詳解(上)

歡迎大家學習我的《AutoSAR從概念到實踐系列之MCAL篇》系列課程,我是分享人M哥,目前從事車載控制器的軟件開發及測試工作。 學習過程中如有任何疑問,可底下評論! 如果覺得文章內容在工作學習中有幫助到你,麻煩點贊收藏評論+關注走一波!感謝各位的支持! 根據上一篇內容中…

easypoi 實現word模板導出

特此非常致謝&#xff1a;easypoi實現word模板 基礎的可以參考上文&#xff1b; 但是我的需求有一點點不一樣。 這是我的模板&#xff1a;就是我的t.imgs 是個list 但是很難過的是easy poi 我弄了一天&#xff0c;我都沒有弄出來嵌套list循環怎么輸出顯示&#xff0c;更難過…

Unity中數據存儲_LitJson

文章目錄 LitJson一&#xff1a;介紹二&#xff1a;特點三&#xff1a;使用四&#xff1a;注意事項 LitJson 一&#xff1a;介紹 LitJson 是一個專為 .NET 設計的輕量級 JSON 處理庫&#xff0c;支持序列化和反序列化 JSON 數據。 二&#xff1a;特點 快速且輕量 無外部依賴…

2025年首屆人形機器人半程馬拉松比賽(附機器人照片)

2025年4月19日&#xff0c;北京亦莊半程馬拉松暨人形機器人半場馬拉松正式開賽&#xff0c;作為全球首屆人形機器人戶外跑步成功舉辦&#xff0c;21.0975公里的戶外路程對人形機器人來講&#xff0c;注定將成為歷史性開篇&#xff0c;如果賽事能夠持續舉辦&#xff0c;那舉辦意…

網絡安全職業技能大賽Server2003

通過本地PC中滲透測試平臺Kali對服務器場景Windows進?系統服務及版本掃描滲透測 試&#xff0c;并將該操作顯示結果中Telnet服務對應的端?號作為FLAG提交 使用nmap掃描發現目標靶機開放端口232疑似telnet直接進行連接測試成功 Flag&#xff1a;232 通過本地PC中滲透測試平臺…

[java八股文][Java基礎面試篇]I/O

Java怎么實現網絡IO高并發編程&#xff1f; 可以用 Java NIO &#xff0c;是一種同步非阻塞的I/O模型&#xff0c;也是I/O多路復用的基礎。 傳統的BIO里面socket.read()&#xff0c;如果TCP RecvBuffer里沒有數據&#xff0c;函數會一直阻塞&#xff0c;直到收到數據&#xf…

Python常用的第三方模塊之【jieba庫】支持三種分詞模式:精確模式、全模式和搜索引擎模式(提高召回率)

Jieba 是一個流行的中文分詞Python庫&#xff0c;它提供了三種分詞模式&#xff1a;精確模式、全模式和搜索引擎模式。精確模式嘗試將句子最精確地切分&#xff0c;適合文本分析&#xff1b;全模式則掃描文本中所有可能的詞語&#xff0c;速度快但存在冗余&#xff1b;搜索引擎…

QT6 源(37):界面組件的總基類 QWidget 的源碼閱讀(下,c++ 代碼部分)

&#xff08;1&#xff09; QT 在 c 的基礎上增加了自己的編譯器&#xff0c;以支持元對象系統和 UI 界面設計&#xff0c;有 MOC 、 UIC 等 QT 自己的編譯器。本節的源代碼里&#xff0c;為了減少篇幅&#xff0c;易于閱讀&#xff0c;去除了上篇中的屬性部分&#xff0c; 上篇…

rabbitmq-spring-boot-start版本優化升級

文章目錄 1.前言2.優化升級內容3.依賴4.使用4.1發送消息代碼示例4.2消費監聽代碼示例4.3 brock中的消息 5.RabbmitMq的MessageConverter消息轉換器5.1默認行為5.2JDK 序列化的缺點5.3使用 JSON 進行序列化 6.總結 1.前言 由于之前手寫了一個好用的rabbitmq-spring-boot-start啟…

git lfs下載大文件限額

起因是用 model.load_state_dict(torch.load())加載pt權重文件時&#xff0c;出現錯誤&#xff1a;_pickle.UnpicklingError: invalid load key, ‘v’. GPT告訴我&#xff1a;你的 pt 文件不是權重文件&#xff0c;而是模型整體保存&#xff08;或根本不是 PyTorch 文件&#…

什么是RAG?RAG的主要流程是什么?

**RAG(Retrieval-Augmented Generation)**是一種結合檢索與生成技術的框架,旨在通過引入外部知識增強生成模型的性能。其核心思想是:在生成文本時,先從外部知識庫中檢索相關信息,再將檢索結果與原始輸入結合,作為生成模型的輸入,從而提升生成內容的準確性、相關性和信息…

【Rust 精進之路之第13篇-生命周期·進階】省略規則與靜態生命周期 (`‘static`)

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025年4月20日 引言:讓編譯器“讀懂”你的意圖——省略的藝術 在上一篇【生命周期入門】中,我們理解了生命周期的必要性——它是 Rust 編譯器用來確保引用有效性、防止懸垂引用的關鍵機制。我…

Python爬蟲實戰:獲取xie程網敦煌酒店數據并分析,為51出行做參考

一、引言 伴隨互聯網的飛速發展,在線旅游平臺成為人們出行預訂酒店的重要途徑。xie程網作為國內頗具知名度的在線旅游平臺,存有豐富的酒店信息。借助爬取xie程網的酒店數據并加以深入分析,能夠為用戶提供更為精準的酒店推薦,特別是在旅游旺季,如 51 出行期間。本研究致力…

第二十一講 XGBoost 回歸建模 + SHAP 可解釋性分析(利用R語言內置數據集)

下面我將使用 R 語言內置的 mtcars 數據集&#xff0c;模擬一個完整的 XGBoost 回歸建模 SHAP 可解釋性分析 實戰流程。我們將以預測汽車的油耗&#xff08;mpg&#xff09;為目標變量&#xff0c;構建 XGBoost 模型&#xff0c;并用 SHAP 來解釋模型輸出。 &#x1f697; 示例…

PyMC+AI提示詞貝葉斯項目反應IRT理論Rasch分析籃球比賽官方數據:球員能力與位置層級結構研究

全文鏈接&#xff1a;tecdat.cn/?p41666 在體育數據分析領域不斷發展的當下&#xff0c;數據科學家們致力于挖掘數據背后的深層價值&#xff0c;為各行業提供更具洞察力的決策依據。近期&#xff0c;我們團隊完成了一項極具意義的咨詢項目&#xff0c;旨在通過先進的數據分析手…