【git】基礎內容(git 基礎

      網友投稿 878 2025-04-02

      分布式版本控制 Git

      版本控制(Revision control)是一種在開發的過程中用于管理我們對文件、目錄或工程等內容的修改歷史,方便查看更改歷史記錄,備份以便恢復以前的版本的軟件工程技術。

      Git是分布式版本控制系統,分布式特點:沒有中央服務器,每個人的電腦就是一個完整的版本庫。Git是免費、開源的,最初Git是為輔助 Linux 內核開發的,來替代 BitKeeper!

      git優點:

      實現跨區域多人協同開發

      追蹤和記載一個或者多個文件的歷史記錄

      組織和保護你的源代碼和文檔

      統計工作量

      并行開發、提高開發效率

      跟蹤記錄整個軟件的開發過程

      由于沒有中央服務器,每個人的電腦就是一個完整的版本庫,不會因為服務器損壞或者網絡問題,造成不能工作的情況

      適合分布式開發,強調個體。

      任意兩個開發者之間可以很容易的解決沖突。

      git缺點:

      代碼保密性差,每個人都擁有全部的代碼!

      所有版本信息倉庫全部同步到本地的每個用戶,增加了本地存儲空間的占用。

      模式上比SVN更加復雜。

      Git=“飯桶”?

      我們都知道,Linux 內核開源項目有著為數眾廣的參與者。整個項目組開始的時候啟用一個分布式版本控制系統 BitKeeper 來管理和維護代碼。本來BitKeeper 用的好好的,后來BitKeeper公司懷疑Linux社區中一些大佬在搞逆向工程,企圖破解 BitKeeper !他們就收回了給Linux開發者的免費授權,于是Linus不得不自己寫了一個分布式版本控制系統,還給它起名git。

      小伙伴們可以想象有人開發一款軟件,并且給它起名“傻逼”或者“飯桶”的場景么。

      Git環境配置

      軟件下載

      打開 [git官網] https://git-scm.com/,下載git對應操作系統的版本。

      官網下載太慢,我們可以使用淘寶鏡像下載:http://npm.taobao.org/mirrors/git-for-windows/

      下載對應的版本即可安裝!

      Windows安裝:傻瓜式點擊下一步(更改一下安裝目錄),倘若還有問題的話,在【Hexo】筆記01:安裝Hexo-云社區-華為云 中有詳解

      Liunx安裝

      1、如果你碰巧用Debian或Ubuntu Linux,通過一條sudo apt-get install git就可以直接完成Git的安裝,非常簡單。

      2、老一點的Debian或Ubuntu Linux,要把命令改為sudo apt-get install git-core,因為以前有個軟件也叫GIT(GNU Interactive Tools),結果Git就只能叫git-core了。由于Git名氣實在太大,后來就把GNU Interactive Tools改成gnuit,git-core正式改為git。

      3、如果是其他Linux版本,可以直接通過源碼安裝。先從Git官網下載源碼,然后解壓,依次輸入:./config,make,sudo make install這幾個命令安裝就好了。

      軟件卸載

      打開系統屬性

      打開系統設置

      打開環境變量

      刪除Path

      刪除git環境后再進行軟件卸載

      啟動Git

      安裝成功后在開始菜單中會有Git項

      任意文件夾下右鍵也可以看到對應的git

      Git Bash:Unix與Linux風格的命令行,使用最多,推薦最多

      Git CMD:Windows風格的命令行

      Git GUI:圖形界面的Git,不建議初學者使用,盡量先熟悉常用命令

      常用的Linux命令

      1)、cd : (change directory)改變目錄。

      2)、cd . . 回退到上一個目錄,直接cd進入默認目錄

      3)、pwd : 顯示當前所在的目錄路徑。

      4)、ls(ll): 都是列出當前目錄中的所有文件,只不過ll(兩個ll)列出的內容更為詳細。

      5)、touch : 新建一個文件 如 touch index.js 就會在當前目錄下新建一個index.js文件。

      6)、rm: (remove)刪除一個文件, rm index.js 就會把index.js文件刪除。

      7)、mkdir: (make directory)新建一個目錄,就是新建一個文件夾。

      8)、rm -r : 刪除一個文件夾, 例如:rm -r src 刪除src目錄

      rm -rf / 切勿在Linux中嘗試!f遞歸 /代表根目錄,直接格式化所有文件!!

      9)、mv :(move)移動文件,

      mv index.html src

      index.html 是我們要移動的文件, src 是目標文件夾,當然, 這樣寫,必須保證文件和目標文件夾在同一目錄下。

      10)、reset 重新初始化終端/清屏。

      11)、clear 清屏。

      12)、history 查看命令歷史。

      13)、help 幫助。

      14)、exit 退出。

      15)、#表示注釋

      Git配置

      所有的配置文件,其實都保存在本地!

      查看配置 git config -l

      查看不同級別的配置文件:

      #查看系統config git config --system --list #查看當前用戶(global)配置 git config --global --list #查看當前倉庫配置信息 git config --local --list

      Git相關的配置文件:

      1)、Git\etc\gitconfig :Git 安裝目錄下的 gitconfig --system 系統級

      2)、C:\Users\Administrator\ .gitconfig : 只適用于當前登錄用戶的配置 --global 全局

      3)、當前文件夾\.git\config :查看當前倉庫配置信息

      設置用戶名與郵箱(必須的用戶標識)

      當你安裝Git后首先要做的事情是設置你的用戶名稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:

      git config --global user.name "LongYorke" #名稱

      git config --global user.email xxxxxxxxxx@qq.com #郵箱

      只需要做一次這個設置,如果你傳遞了--global 選項,因為Git將總是會使用該信息來處理你在系統中所做的一切操作。

      如果你希望在一個特定的項目中使用不同的名稱或e-mail地址,你可以在該項目中運行該命令而不要--global選項。

      總之--global為全局配置,不加為某個項目的特定配置。

      Git基本理論

      四個區域

      Git本地有三個工作區域:工作目錄(Working Directory)、暫存區(Stage/Index)、資源庫(Repository或Git Directory)。如果在加上遠程的git倉庫(Remote Directory)就可以分為四個工作區域。文件在這四個區域之間的轉換關系如下:

      Workspace:工作區,就是你平時存放項目代碼的地方

      Index / Stage:暫存區,用于臨時存放你的改動,事實上它只是一個文件,保存即將提交到文件列表信息。就像我們去購物一樣,先把東西放到購物車Index / Stage,去結賬沒問題后放到家里Repository

      Repository:倉庫區(或本地倉庫),就是安全存放數據的位置,這里面有你提交到所有版本的數據。其中HEAD指向最新放入倉庫的版本

      Remote:遠程倉庫,托管代碼的服務器,可以簡單的認為是你項目組中的一臺電腦用于遠程數據交換

      git倉庫中HEAD指向本地的倉庫區內當前的開發分支,默認主分支master

      文件的四種狀態

      版本控制就是對文件的版本控制,要對文件進行修改、提交等操作,首先要知道文件當前在什么狀態,不然可能會提交了現在還不想提交的文件,或者要提交的文件沒提交上。

      Untracked: 未跟蹤, 此文件在文件夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態變為Staged.

      Unmodify: 文件已經入庫, 未修改, 即版本庫中的文件快照內容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變為Modified. 如果使用git rm移出版本庫, 則成為Untracked文件

      Modified: 文件已修改, 僅僅是修改, 并沒有進行其他的操作. 這個文件也有兩個去處, 通過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過, 返回到unmodify狀態, 這個git checkout即從庫中取出文件, 覆蓋當前修改 !

      Staged: 暫存狀態. 執行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變為一致, 文件為Unmodify狀態. 執行git reset HEAD filename取消暫存, 文件狀態為Modified

      下圖描述了文件狀態、三個區域(本地)、部分命令關聯部分

      git status [filename] :查看指定文件狀態

      git status:查看所有文件狀態

      git diff:比較文件的不同,即暫存區和工作區的差異。

      git log:查看歷史提交記錄

      黑色:

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

      git commit -m “1.0.0”:將本地修改過的文件提交到本地庫中,并有提交信息1.0.0,master 分支會做相應的更新。

      git rm --cached :會直接從暫存區index/stage刪除文件,工作區則不做出改變。

      紅色:

      git reset HEAD :暫存區index/stage的目錄樹會被respository重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。

      綠色:

      git checkout . 或者 git checkout -- :,會用暫存區index/stage全部或指定的文件覆蓋工作區的文件。這個操作會清除工作區中未添加到暫存區的改動。

      git checkout HEAD . 或者 git checkout HEAD :會用 HEAD 指向的 master 分支中的全部或者部分文件覆蓋暫存區和以及工作區中的文件。這個命令不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。

      如果再討論遠程倉庫:

      git push:是將本地庫中的最新信息發送給遠程庫;

      git pull:是從遠程獲取最新版本到本地,并自動merge;

      git fetch:是從遠程獲取最新版本到本地,不會自動merge;

      git merge:是用于從指定的commit(s)合并到當前分支,用來合并兩個分支;

      加上分支內容:

      # 列出所有本地分支和遠程分支 $ git branch -a # 新建一個分支,但依然停留在當前分支 $ git branch [branch-name] # 新建一個分支,并切換到該分支 $ git checkout -b [branch] # 新建一個分支,指向指定commit $ git branch [branch] [commit] # 新建一個分支,與指定的遠程分支建立追蹤關系 $ git branch --track [branch] [remote-branch] # 切換到指定分支,并更新工作區 $ git checkout [branch-name] # 切換到上一個分支 $ git checkout - # 建立追蹤關系,在現有分支與指定的遠程分支之間 $ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到當前分支 $ git merge [branch] # 選擇一個commit,合并進當前分支 $ git cherry-pick [commit] # 刪除分支 $ git branch -d [branch-name] # 刪除遠程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]

      有點暈?那么來一波總結:

      1、存儲(去的感覺):

      git add 工作區->暫存區

      git commit -m 暫存區->本地倉庫

      git commit --amend -m [message] ①如代碼無新變化,覆蓋上一次commit的提交信息

      ②如有變,覆蓋上一次commit

      git push 本地倉庫->遠程倉庫

      2、覆蓋與刪除(回的感覺):

      git merge:本地倉庫內兩個部分合并

      git fetch 遠程倉庫->本地倉庫

      git pull 相當于 git fetch + git merge。

      (有“HEAD” 的從本地倉庫開始操作)

      git reset HEAD 本地倉庫的內容->暫存區 (覆蓋)

      git reset --hard HEAD 本地倉庫的內容->工作區+暫存區(覆蓋)

      git checkout HEAD 本地倉庫的內容->暫存區+工作區(覆蓋)

      git checkout ①--<文件> 暫存區內容->工作區(覆蓋) ②<分支> 切換分支

      git rm --cached 暫存區->垃圾桶

      git rm [file1] [file2] 工作區->垃圾桶(同時)工作區刪除記錄->暫存區

      3、最開始啥也沒有

      git init

      git clone 遠程倉庫->本地倉庫+暫存區+工作區

      4、分支

      看下面實際操作過程

      工作流程

      Gitee、Github 兩大代碼托管平臺,小孩子才做選擇,我們都要~

      工作流程一般是這樣的:

      1、使用以下命令生成 SSH Key:

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

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

      打開id_rsa.pub,復制里面的key。

      2、上傳自己的 SSH 公鑰。

      github:

      左側尋到

      gitee:

      3、添加倉庫信息:

      github:

      gitee:

      4、創建倉庫

      git init

      5、 從現有 Git 倉庫中拷貝項目,如

      git clone git://github.com/xxx/xxx.git

      5、本地庫上使用命令git remote add把它和 Gitee 的遠程庫關聯:

      git remote add origin git@gitee.com:longyorke/LongYorke_test.git

      出現該情況說明本地庫已經關聯了一個名叫 origin 的遠程庫(做該實驗之前我已經關聯過了,如果第一次關聯是不會fatal的),此時,可以先用git remote -v查看遠程庫信息:

      git remote -v

      可以看到,本地庫已經關聯了 origin 的遠程庫,并且,該遠程庫指向 Gitee。

      我們可以刪除已有的 Gitee 遠程庫:

      git remote rm origin

      重新關聯遠程庫:git 給遠程庫起的默認名稱是 origin,如果有多個遠程庫,我們需要用不同的名稱來標識不同的遠程庫。

      git remote add github git@github.com:LongYorke/long-yorke_music.git

      git remote add gitee git@gitee.com:LongYorke/long-yorke_music.git

      此刻,遠程庫名字不再是 origin,而是我們設置的github與gitee

      $ git remote -v gitee git@gitee.com:longyorke/long-yorke_music.git (fetch) gitee git@gitee.com:longyorke/long-yorke_music.git (push) github git@github.com:Longyorke/LongYorke_music.git (fetch) github git@github.com:Longyorke/LongYorke_music.git (push)

      6、有了修改的變化后,瞅一下文件狀態

      git status

      7、將工作區的文件提交到暫存區域。

      git add .

      8、將暫存區域的文件提交到本地倉庫。

      git commit -m '初始化項目版本'

      9、如果要推送到 GitHub,使用命令:

      git push github master

      如果要推送到 Gitee,使用命令:

      git push gitee master

      10、分支管理

      【git】基礎內容(git 基礎)

      創建一個dev分支用于測試開發,master分支用于穩定版存儲

      git branch dev

      觀察分支

      git branch

      切換分支命令:

      git checkout dev

      合并分支命令:

      出于dev分支時,將material合并進入dev分支

      git merge master

      刪除dev分支命令:

      git branch -d dev

      11、恢復

      git中把commit刪了后,并不是真正的刪除,而是變成了懸空對象(dangling commit)。我們只要把把這懸空對象(dangling commit)找出來。

      1)用git reset --hard HEAD 覆蓋后

      2)找到懸空對象

      git fsck --lost-found dangling commit xxx

      3)用合并命令進行恢復:

      git merge xxx

      12、強制覆蓋遠程分支

      然后用這個

      git push -u 我們起的主機名字 本地分支 -f

      強制覆蓋已有遠程的分支

      此外還有Git 查看提交歷史、Git 標簽等內容

      可以進入gitee官網了解更全面的內容

      Git 倉庫基礎操作 - Gitee.com

      可以進入git官網學習更全面的知識

      Git - 關于版本控制

      Git Linux

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

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

      上一篇:wps表格照怎么使用相機功能(wps表格拍照功能)
      下一篇:excel2013加載項怎么添加?
      相關文章
      国产精品亚洲а∨天堂2021| 亚洲理论精品午夜电影| 在线观看亚洲人成网站| 亚洲精品无码MV在线观看| 成人婷婷网色偷偷亚洲男人的天堂| 在线观看亚洲AV日韩A∨| 亚洲午夜在线播放| 亚洲伦理一二三四| 亚洲偷偷自拍高清| 亚洲熟妇av午夜无码不卡 | 亚洲精品国产精品乱码不卡√ | 在线aⅴ亚洲中文字幕| 97久久国产亚洲精品超碰热| 2020国产精品亚洲综合网 | 亚洲夜夜欢A∨一区二区三区| 中文字幕亚洲日本岛国片| 亚洲无线一二三四区手机| 中文字幕亚洲综合久久男男| 中文亚洲AV片不卡在线观看| 国产亚洲综合久久系列| 亚洲国产高清在线| 亚洲综合久久1区2区3区| 亚洲国产成人九九综合| 亚洲三级中文字幕| 亚洲日本va一区二区三区| 亚洲av乱码中文一区二区三区| 蜜臀亚洲AV无码精品国产午夜.| 日韩亚洲精品福利| 亚洲性日韩精品一区二区三区| 亚洲综合国产一区二区三区| 亚洲AV无码日韩AV无码导航| 精品亚洲A∨无码一区二区三区 | 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲精品无码久久久久AV麻豆| 亚洲人成人无码网www国产| 亚洲日韩精品A∨片无码| 久久噜噜噜久久亚洲va久| 亚洲精品在线免费观看视频| 亚洲欧洲日韩极速播放| 精品亚洲福利一区二区| 国产亚洲精品不卡在线|