亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分布式版本控制系統——Git詳解

發布時間:2020-07-31 19:22:45 來源:網絡 閱讀:1175 作者:warrent 欄目:系統運維

前言:


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

下圖是經典的git開發過程:

分布式版本控制系統——Git詳解

git的功能特性如下:

  • 服務器上克隆完整的git倉庫(包括代碼和版本信息)到單機上;
  • 在自己的機器上根據不同的開發目的,創建分支,修改代碼;
  • 在單機上自己創建的分支上提交代碼;
  • 在單機上合并分支;
  • 把服務器上最新版的代碼fetch下來,然后跟自己的主分支合并;
  • 生成補丁,把補丁發送給主開發者;

關于git就介紹至此了,接下來將演示git的基本操作。

博文大綱:

  • 一、安裝git
  • 二、git庫的創建及介紹
  • 三、git庫的基本操作
  • 四、撤銷修改的操作
  • 五、將本地git庫關聯到github
  • 六、從github下載到本地git版本庫

git可以安裝在Windows、mac、Linux等操作系統之上,這里將寫下如何安裝在Linux系統之上,及其基本操作。

一、安裝git

非常簡單,就一條命令,如下:

[root@git ~]# yum -y install git

二、git庫的創建及介紹

#最好使用一個空的目錄作為git庫
[root@git ~]# mkdir git
[root@git ~]# cd git
[root@git git]# git init   #在空目錄下初始化為git庫
初始化空的 Git 版本庫于 /root/git/.git/
[root@git git]# ls -a      #初始化成功后,會生成一個.git的隱藏目錄
.  ..  .git
#生成的隱藏目錄是用來跟蹤管理版本庫的,不建議隨便修改其目錄中的文件,
#如果改亂了,就把git庫給破壞了。

在git版本庫中,有三個重要的概念:工作區、暫存區、版本庫。

  • 工作區:就是你的系統中可以看到的目錄;
  • 暫存區:一般存放在.git目錄下的index文件中,所以也會將暫存區叫做索引;
  • 版本庫:工作區中的有一個.git隱藏目錄,這個不算工作區,而是git的版本庫。

下面這個圖展示了工作區、版本庫中的暫存區和版本庫之間的關系:

分布式版本控制系統——Git詳解

上圖中,左側為工作區,右側為版本庫,在版本庫中標記為“index”的區域就是暫存區,標記為“master”的是master分支代表的目錄樹。

當對工作區修改(或新增)的文件執行 "git add" 命令時,暫存區的目錄樹被更新,同時工作區修改(或新增)的文件內容被寫入到對象庫中的一個新的對象中,而該對象的ID被記錄在暫存區的文件索引中。

當執行提交操作(git commit)時,暫存區的目錄樹寫到版本庫(對象庫)中,master 分支會做相應的更新。即 master 指向的目錄樹就是提交時暫存區的目錄樹。

當執行 "git reset HEAD" 命令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。

當執行 "git rm --cached <file>" 命令時,會直接從暫存區刪除文件,工作區則不做出改變。

當執行 "git checkout ." 或者 "git checkout -- <file>" 命令時,會用暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區的改動。

當執行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令時,會用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區和以及工作區中的文件。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。

三、git庫的基本操作

#需要先自報家門,聲明姓名及郵箱
[root@git git]# git config --global user.name "ljz"
[root@git git]# git config --global user.email "ljz@ljz.com"
[root@git git]# echo "aaaa" > git.txt      #創建一個文件用于測試
[root@git git]# git add git.txt       #將測試文件添加到暫存區
[root@git git]# git commit -m "第一次提交"     
#將暫存區的文件提交到版本庫,并且一定要使用“-m”選項注明提交說明
[master(根提交) eecbb4d] 第一次提交
 1 file changed, 1 insertion(+)
 create mode 100644 git.txt
[root@git git]# echo "bbbb" >> git.txt      #修改測試文件內容
[root@git git]# git add git.txt       #添加到暫存區
[root@git git]# git status        #查看git的狀態
# 位于分支 master
# 要提交的變更:
#   (使用 "git reset HEAD <file>..." 撤出暫存區)
#
#   修改:      git.txt      #可以看到提示git.txt已被修改
#新建幾個測試文件
[root@git git]# echo "第二個測試文件" > git2.txt
[root@git git]# echo "第三個測試文件" > git3.txt
[root@git git]# ls           #確認新建的測試文件
git2.txt  git3.txt  git.txt
[root@git git]# git add git2.txt git3.txt         #一次提交多個文件
[root@git git]# git status   #查看git的狀態
# 位于分支 master
# 要提交的變更:
#   (使用 "git reset HEAD <file>..." 撤出暫存區)
#
#   修改:      git.txt
#   新文件:    git2.txt
#   新文件:    git3.txt
#上面是提示git被修改,并且添加了兩個新的文件
[root@git git]# git commit -m "提交多個版本"    #將暫存區的多個版本進行提交
[master 86c5044] 提交多個版本
 3 files changed, 3 insertions(+)
 create mode 100644 git2.txt
 create mode 100644 git3.txt
[root@git git]# git log --pretty=oneline         #查看提交記錄,一行對應一次提價記錄
86c50445d84591741812e0bd9088a1c67bf5e9ec 提交多個版本
eecbb4d9ff025681b4abe4ec2bdd90eeb0b66fd6 第一次提交

#至此,git庫下的所有文件都被提交了,那么,我現在將本地的所有文件都刪除,查看下git的狀態是什么
[root@git git]# rm git*       #刪除當前目錄下所有的測試文件
[root@git git]# git status        #查看git的狀態
# 位于分支 master
# 尚未暫存以備提交的變更:
#   (使用 "git add/rm <file>..." 更新要提交的內容)
#   (使用 "git checkout -- <file>..." 丟棄工作區的改動)
#
#   刪除:      git.txt
#   刪除:      git2.txt
#   刪除:      git3.txt
#上述提示了刪除了三個文件,下面說的是修改了但是尚未提交
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

#那么,我現在若想恢復刪除的文件呢?只需進行以下操作:
[root@git git]# git reflog --pretty=oneline         #查看提交記錄
86c5044 HEAD@{0}: commit: 提交多個版本
eecbb4d HEAD@{1}: commit (initial): 第一次提交
[root@git git]# ls       #確定當前目錄下沒有任何測試文件
[root@git git]# git reset --hard 86c5044      #版本回滾到指定提交的文職
HEAD 現在位于 86c5044 提交多個版本
[root@git git]# ls      #再次查看,被刪除的文件又回來了
git2.txt  git3.txt  git.txt

#那么,現在我想要恢復到第一次提交的時候呢?

[root@git git]# git reflog --pretty=oneline      #同樣需要查看其日志記錄
86c5044 HEAD@{0}: commit: 提交多個版本
eecbb4d HEAD@{1}: commit (initial): 第一次提交
[root@git git]# git reset --hard HEAD@{1}        #對,在版本回滾時,不但可以指定第一列的ID號,也可以指定其HEAD字段
HEAD 現在位于 eecbb4d 第一次提交
[root@git git]# ls    #再次查看當前工作目錄下,恢復到了最初只有一個測試文件的狀態
git.txt
[root@git git]# git reset --hard 86c5044          #再次恢復到測試文件最多的時候
HEAD 現在位于 86c5044 提交多個版本
[root@git git]# ls
git2.txt  git3.txt  git.txt

四、撤銷修改的操作

關于撤銷修改,其實在上面已經展示出來如何從版本庫中撤銷修改了,那么下面將介紹如何從暫存區、工作臺進行撤銷修改

1、從工作臺撤銷修改


[root@git git]# cat git.txt   #確定當前文件內容
aaaa
bbbb
[root@git git]# echo "cccc" >> git.txt      #修改文件內容
[root@git git]# cat git.txt       #查看修改后的文件
aaaa 
bbbb
cccc
[root@git git]# git checkout -- git.txt            #對工作臺執行撤銷操作
[root@git git]# cat git.txt         #確認新添加的內容被撤銷
aaaa
bbbb

2、從暫存區撤銷修改

[root@git git]# echo "abcd" > ljz.txt     #創建新的測試文件
[root@git git]# git add ljz.txt              #添加至暫存區
[root@git git]# git status           #查看git狀態
# 位于分支 master 
# 要提交的變更:
#   (使用 "git reset HEAD <file>..." 撤出暫存區)
#
#   新文件:    ljz.txt        #提示有新添加的文件
[root@git git]# git reset HEAD ljz.txt         #執行撤銷操作
[root@git git]# git status       #再次查看git的狀態,提示提交為空,還提示使用git add建立提交
# 位于分支 master
# 未跟蹤的文件:
#   (使用 "git add <file>..." 以包含要提交的內容)
#
#   ljz.txt
提交為空,但是存在尚未跟蹤的文件(使用 "git add" 建立跟蹤)

3、從版本庫中刪除指定版本

[root@git git]# rm git.txt       #刪除本地文件
[root@git git]# git rm git.txt        #使用git執行rm命令
[root@git git]# git commit -m "刪除文件"     #提交到版本庫,

至此,都只是git版本庫的基本操作,那么?我們如何將我們的git
庫關聯到github上呢?下面是兩種情況下的關聯方法。

五、將本地git庫關聯到github

情況一:本地有git庫,github庫是空的:

1、首先需要先創建一個空的github庫。

自行注冊github賬號并登陸,比較簡單,這里就不寫了。

分布式版本控制系統——Git詳解

分布式版本控制系統——Git詳解

在主機上生成秘鑰對,并上傳至github上:

[root@git git]# ssh-keygen -t rsa -C "916551516@qq.com"        #執行此命令后,一路按回車即可,“-C”后面是自己的郵箱地址
[root@git git]# cat ~/.ssh/id_rsa.pub     #查看生成的公鑰,并復制其內容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5ubfu4/UxpX/1aW3bPLUBihphbC0sUkmM0NusofTEW2rQ6Fy4+tRb2qvDLm6XXXBIzDNcr16qFGE95OFmhGF+M+TjjjvVyMFQu+qLjyfRceiYlLZ6II0ZY5+agQJSYlFYYyvHhJHFo69S07jx5A7Q2doLpW+O0i2MLdY0CyKvlRgE9Onoj+8TM9ZBfJdtoAGQdkH353NeiFJOJi71+KQgvvzpRiRiRjTv4mLGuWdeAAhxG1+rGnyotQktiobHGHKPLpm9w/PT95tuKQ/d8zH4BqsDkWuzIMy5E0vhELpEHFBilx6YuPL2h2N8YSFARxyz4zRPAQoCeATdgA+nD68z 916551516@qq.com

在github上操作如下,以便添加公鑰:
分布式版本控制系統——Git詳解

分布式版本控制系統——Git詳解

分布式版本控制系統——Git詳解

分布式版本控制系統——Git詳解

輸入github賬號的密碼進行驗證:
分布式版本控制系統——Git詳解

確定添加成功:

分布式版本控制系統——Git詳解

2、

回到新創建的庫:
分布式版本控制系統——Git詳解
分布式版本控制系統——Git詳解
分布式版本控制系統——Git詳解

[root@git git]# ls -a       #當前的工作目錄必須是一個git庫
.  ..  .git  git2.txt  git3.txt  git.txt  ljz.txt
[root@git git]# git remote add origin git@github.com:lvjianzhao/test01.git  #執行提示的第一條命令
[root@git git]# git push -u origin master        #進行提交,由于是第一次上傳,所以需要使用“-u”選項
#如果執行上述命令后,提示需要輸入“yes”,輸入即可
Counting objects: 8, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (8/8), 563 bytes | 0 bytes/s, done.
Total 8 (delta 0), reused 0 (delta 0)
To git@github.com:lvjianzhao/test01.git
 * [new branch]      master -> master
分支 master 設置為跟蹤來自 origin 的遠程分支 master。
#提示已經提交成功了。

至此,F5刷新我們github上剛剛創建的庫的頁面,就可以看到我們工作臺目錄下的那些文件了,如下:

分布式版本控制系統——Git詳解

六、從github下載到本地git版本庫

上述已經演示了如何將本地的git版本庫關聯到遠端的github的空庫。

那么這里將展示如何將github已存在的庫(庫中有內容)下載到本地。

由于在第五步操作時,已經設置好了郵箱及ssh秘鑰等操作,所以這里就可以省略這兩部操作了,如果沒有配置郵箱及ssh秘鑰,可參考第五個段落進行配置。

這里就將第五步創建的github庫下載到本地。

找到github創建的庫,如下:

分布式版本控制系統——Git詳解

分布式版本控制系統——Git詳解

[root@git /]# git clone git@github.com:lvjianzhao/test01.git  
#執行命令“git clone”,后面的路徑就是我們復制的github上的ssh路徑
正克隆到 'test01'...
Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 8 (delta 0), reused 8 (delta 0), pack-reused 0
接收對象中: 100% (8/8), done.
[root@git /]# cd test01/         #克隆成功后,就會在當前目錄下生成test01這個庫
[root@git test01]# ls        #并且內容就是我們github上的內容
git2.txt  git3.txt  git.txt
[root@git test01]# echo "clone success..." > succed   #創建新的測試文件
[root@git test01]# ls      #如下:
git2.txt  git3.txt  git.txt  succed
[root@git test01]# git add succed      #將新創建的文件添加到暫存區
[root@git test01]# git commit -m "clone succes"     #提交到版本庫
[master e62bdba] clone succes
 1 file changed, 1 insertion(+)
 create mode 100644 succed
 [root@git test01]# git push origin master    #將本地文件推送到github
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 272 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To git@github.com:lvjianzhao/test01.git
   86c5044..e62bdba  master -> master

[root@git test01]# git remote       #查看遠端版本庫的信息
origin

回到github上,刷新庫的頁面,即可看到新提交的文件,如下:

分布式版本控制系統——Git詳解

———————— 本文至此結束,感謝閱讀 ————————

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿克| 马尔康县| 湘潭市| 郎溪县| 章丘市| 平潭县| 张家港市| 隆林| 德昌县| 兴和县| 长宁县| 扎赉特旗| 揭东县| 赞皇县| 陆丰市| 永昌县| 远安县| 南投县| 平顺县| 文成县| 鄂州市| 偃师市| 定南县| 安化县| 濮阳县| 濉溪县| 宁城县| 关岭| 泸水县| 理塘县| 兴宁市| 衢州市| 克山县| 长白| 万盛区| 云霄县| 娄烦县| 阳西县| 孝义市| 沙洋县| 关岭|