GIT筆記

      網友投稿 903 2025-04-03

      一、概述

      1.1git概念

      1.2Git與SVN區別

      Git不僅僅是版本控制系統,也是一個內容管理系統相比與SVN的區別如下:

      1.GIT為分布式,SVN則不是;

      2.GIT按照元數據形式存儲內容,講所有資源孔子系統都是把文件的元數據隱藏在一個類似.svn,.cvs的文件夾內,而SVN是按文件;

      3.GIT分支與SVN不同,分支在SVN內的另一個目錄;

      4.GIT沒有全局版本號,SVN有全局版本號;

      5.GIT內容完整性優于SVN,GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。

      1.3 GIT工作流程

      1.克隆Git資源作為工作目錄

      2.在克隆的資源上添加或修改文件

      3.如果他人修改,你可以進行資源更新

      4.在提前查看修改

      5.提交修改

      6.在修改完成后,如果發現錯誤,可撤回提交并再次修改提交

      流程圖:

      1.4 基本概念

      工作區:本地PC可以看到的目錄

      暫存區:英文名稱stage,或index,一般存放在“.git目錄”下的index文件(.git/index)中,所以我們把暫存區有時也稱作索引(index)

      版本庫:工作區有一個隱藏的目錄.git,此為Git的版本庫

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

      圖中可以看到“HEAD”實際指向的是master分支的一個“游標”,所以途中的HEAD的地方可以用master來替換。

      圖中的 objects 標識的區域為 Git 的對象庫,實際位于 “.git/objects” 目錄下,里面包含了創建的各種對象及內容。

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

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

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

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

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

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

      二、安裝配置

      2.1 Git安裝

      yum 安裝

      yum install git git --version #查看版本

      源碼安裝

      yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget -y wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz tar xf git-2.7.3.tar.gz cd git-2.7.3 make configure ./configure --prefix=/usr/local/git make profix=/usr/local/git make install echo "export PATH=$PATH:/usr/local/git/bin" > /etc/profile.d/git.sh #添加環境變量 source /etc/profile.d/git.sh

      2.2 Git配置

      Git 提供了一個叫做 git config 的工具,專門用來配置或讀取相應的工作環境變量。

      配置用戶信息

      git config --global user.name "kaliarch" git config --global user.email kaliarch@anchnet.com git config --list #查看配置

      2.3 創建倉庫

      Git 使用 git init 命令來初始化一個 Git 倉庫,Git 的很多命令都需要在 Git 的倉庫中運行,所以git init是使用 Git 的第一個命令。

      在執行完成 git init 命令后,Git 倉庫會生成一個 .git 目錄,該目錄包含了資源的所有元數據,其他的項目目錄保持不變(不像 SVN 會在每個子目錄生成 .svn 目錄,Git 只在倉庫的根目錄生成 .git 目錄)。

      該命令執行完后會在當前目錄生成一個 .git 目錄。

      使用我們指定目錄作為Git倉庫。

      初始化后,會在 newrepo 目錄下會出現一個名為 .git 的目錄,所有 Git 需要的數據和資源都存放在這個目錄中。

      如果當前目錄下有幾個文件想要納入版本控制,需要先用 git add 命令告訴 Git 開始對這些文件進行跟蹤,然后提交:

      git add *.c git add README git commit -m '初始化項目版本' git clone

      三、基礎操作

      3.1 創建目錄初始化

      mkdir /workspace cd /workspace git init

      此時Git倉庫就創建完成了,此時為一個空倉庫(empty Git repository),可以發現當前目錄下有一個隱藏的目錄.git,此目錄為Git來跟蹤管理版本庫,建議不要修改內部文件,以免Git倉庫遭到破壞。

      使用git clone拷貝一個Git倉庫到本地,可以進行項目查看與修改

      git add 接下來我們執行 git add 命令來添加文件: git status -s git status 以查看在你上次提交之后是否有修改。

      3.2 版本回退

      連續添加多個文件后,執行commit提交后,使用git log查看不同版本

      可以使用--oneline選項查看歷史記錄簡潔版本,也可用--graph選項,查看歷史中什么時候出現了分支、合并,

      也可用--reverse參數逆向顯示所有日志。

      添加文件第一步使用git add是將文件添加進暫存區,第二部git commit提交更改,實際上為講暫存區的所有內容提交到當前分支。

      git reset HEAD 命令用于取消緩存的內容。

      HEAD指向的版本,因此,Git允許回退版本,使用命令git reset --hard commit_id

      回退前,可使用git log查看歷史提交記錄,以便確回退到那個版本

      重新返回回退前的,使用git reflog查看歷史命令,回到到未來的某個版本。

      Git 跟蹤并管理的是修改,而非文件,當使用git add命令后,在工作區的第一次修改給放如暫存區,但是 ,在工作區的第二次修改沒放入暫存區,用git commit只負責把暫存區的修改提交,也就是第一次的修改被提交了,第二次的修改未被提交。

      3.3 刪除文件

      直接在工作區刪除,對暫存區和版本庫沒有任何影響。本地刪除如果要反映在暫存區中應該用git rm命令,對不想刪除的文件執行git checkout – ,可以讓文件在工作區重現。用git rm命令執行刪除后,刪除動作加入了暫存區,這時執行提交動作就從真正意義上執行了文件刪除,不過文件只是在版本庫的最新提交中被刪除了,在歷史提交中尚在。

      3.4 移動文件(改名操作)

      改名操作相當于對舊文件執行刪除,對新文件執行添加

      git mv可以由git rm和git add兩條命令取代 $ git mv oldname newname 完成改名操作

      3.5 恢復刪除文件

      git checkout -- readme.txt

      命令git checkout – readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷,這里有兩種情況:

      一種是readme.txt自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

      一種是readme.txt已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。

      總之,就是讓這個文件回到最近一次git commit或git add時的狀態。

      用命令git reset HEAD file可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

      一般情況下,你通常直接在文件管理器中把沒用的文件刪了,或者用rm命令刪了:

      1.一是確實要從版本庫中刪除該文件,那就用命令git rm刪掉,并且git commit

      2.一種情況是刪錯了,因為版本庫里還有呢,所以可以很輕松地把誤刪的文件恢復到最新版本:

      git checkout – test.txt

      四、分支管理

      幾乎所有的版本控制系統都存在某種意義上的分支支持,使用分支意味這可以從開放主線來分離出來,可以在不影響主線的情況下繼續工作

      創建分支:

      git branch (branchname)

      git checkout -b (branchname) #創建并切換到該分支下

      查看分支

      git branch

      切換分支

      git checkout (branchname)

      當切換分支時,Git會用該分支的最后提交快照替換工作目錄的內容,所以分支不需要多個目錄

      合并分支

      git merge

      當執行git init時,缺省情況下Git會創建master分支

      刪除分支

      git branch -d (branchname) -D #強制刪除

      五、搭建GIT服務器

      GitHub就是一個免費托管開源代碼的遠程倉庫。但是對于某些視源代碼如生命的商業公司來說,既不想公開源代碼,又舍不得給GitHub交保護費,那就只能自己搭建一臺Git服務器作為私有倉庫使用。

      搭建Git服務器需要準備一臺運行Linux的機器。

      5.1 安裝GIT

      yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel git -y groupadd git adduser git -g git

      5.2 創建證書登錄

      收集所有需要登錄的用戶的公鑰,公鑰位于id_rsa.pub文件中,把我們的公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。

      如果沒有該文件創建它:

      cd /home/git/ mkdir .ssh chmod 700 .ssh touch .ssh/authorized_keys chmod 600 .ssh/authorized_keys

      5.3 初始化Git倉庫

      首先我們選定一個目錄作為Git倉庫,假定是/home/gitrepo/runoob.git,在/home/gitrepo目錄下輸入命令:

      su - git mkdir gitrepo && cd gitrepo git init --bare kaliarch.git

      5.4 克隆倉庫

      git clone git@172.20.6.11:/home/git/gitrepo/kiliarch.git #172.20.6.11為本地git服務器的地址

      注意:git服務器創建git用戶,如果使用ssh登錄拉去,不可進行git用戶的登錄shell,確保git客戶端的公鑰已經寫入git服務器的authorized_keys內。

      六、遠程倉庫(github)

      注冊GitHub帳號后,從本地GIT參考和GitHub倉庫建傳輸是SSH加密的。

      創建SSH KEY,在用戶主目錄下,如果沒有.ssh目錄及里面的id_rsa.pub文件,需進行公鑰創建。

      ssh-keygen -t rsa -C "youremail@example.com"

      后面的 your_email@youremail.com 改為你在 github 上注冊的郵箱,之后會要求確認路徑和輸入密碼,我們這使用默認的一路回車就行。成功的話會在~/下生成.ssh文件夾,進去,打開 id_rsa.pub,復制里面的 key。

      回到 github 上,進入 Account => Settings(賬戶配置)。

      在客戶端驗證是否已經添加成功

      ssh -T git@github.com

      以下命令說明我們已成功連上 Github。

      之后登錄后點擊" New repository "

      創建成功后初始化本地

      mkdir /dirgit # 創建測試目錄 cd /dirgit # 進入測試目錄 echo "# project" >> README.md git init git add README.md git commit -m "first commit" git remote add origin git@github.com:redhatxl/project.git git push -u origin master

      添加遠程地址

      git remote add origin git@github.com:redhatxl/project.git

      添加第二個倉庫

      git remote add origin2 git@github.com:redhatxl/test.git

      上傳到第二個倉庫

      it push -f origin2

      GIT筆記

      如果你在創建 repository 的時候,加入了 README.md 或者 LICENSE ,那么 github 會拒絕你的 push 。你需要先執行 git pull origin master

      執行 git push -u origin master 將本地倉庫上傳至Github的倉庫并進行關聯:

      以后想在commit后同步到Github上,只要直接執行 git push 就可以。

      查看當前遠程庫

      git remote -v

      1、從遠程倉庫下載新分支與數據:

      git fetch

      2、從遠端倉庫提取數據并嘗試合并到當前分支:

      git merge

      3、刪除遠程倉庫你可以使用命令:

      git remote rm

      4、 推送到 Github

      git push origin master

      Git

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Node-RED教程(二):Node-RED的面板的操作
      下一篇:excel2007怎么畫斜線
      相關文章
      久久久久亚洲AV成人网人人网站| 亚洲精品和日本精品| 国产AV无码专区亚洲AV蜜芽 | 日韩亚洲综合精品国产| 亚洲中文字幕无码中文| 亚洲人成电影在线观看青青| 中文字幕亚洲精品资源网| 久久精品国产亚洲AV无码娇色| 亚洲国产成人久久精品动漫| 亚洲免费在线播放| 亚洲免费视频在线观看| 99久久亚洲精品无码毛片| 91亚洲国产在人线播放午夜| 亚洲国产日韩一区高清在线| 亚洲欧洲日韩不卡| 亚洲美女精品视频| 亚洲一级毛片在线观| 久久精品国产亚洲av麻豆图片 | 亚洲国产精品综合久久网络| 亚洲国产精品一区二区九九| 精品国产日韩亚洲一区| 国产精品亚洲视频| 亚洲乱色熟女一区二区三区丝袜| 日本亚洲成高清一区二区三区| 亚洲Av永久无码精品三区在线| 亚洲ⅴ国产v天堂a无码二区| AV在线亚洲男人的天堂| 亚洲伊人色欲综合网| 亚洲国产精品无码AAA片| 亚洲高清在线视频| 亚洲一区中文字幕| 亚洲欧洲免费无码| 全亚洲最新黄色特级网站 | 亚洲伊人成无码综合网 | 亚洲国产a级视频| 中文字幕亚洲一区二区va在线| 亚洲精品无码国产| 亚洲一区二区中文| 亚洲一区二区三区免费视频| 亚洲精品无码专区久久| 亚洲?V无码成人精品区日韩 |