git知識總結(jié)

簡介


什么是git?

  • git是一款開源的分布式版本控制工具
  • 在世界上所有的分布式版本控制工具中,git是最快、最簡單、最流行的

git的起源

  • 作者是Linux之父:Linus Benedict Torvalds
  • 當(dāng)初開發(fā)git僅僅是為了輔助Linux內(nèi)核的開發(fā)(管理源代碼)

git的現(xiàn)狀

  • 在國外已經(jīng)非常普及,國內(nèi)并未普及(在慢慢普及)
  • 越來越多的開源項目已經(jīng)轉(zhuǎn)移到git

其他版本控制工具


  • CVS
    最早的開源、免費的集中式版本控制工具
    自身設(shè)計有問題,會造成提交文件不完整,版本庫莫名其妙損壞的情況

  • SVN
    p修正了CVS的一些穩(wěn)定性問題,是目前用得最多的集中式版本庫控制工具

  • ClearCase
    收費的集中式版本控制工具,安裝比Windows還大,運行比蝸牛還慢
    能用ClearCase的一般是世界500強,他們有個共同的特點是財大氣粗或者人傻錢多

  • VSS
    微軟的集中式版本控制工具,集成在Visual Studio中

集中式版本控制

集中式.png

分布式版本控制

分布式.png

git和SVN的簡單對比


  1. 速度
    在很多情況下,git的速度遠(yuǎn)遠(yuǎn)比SVN快
  • 結(jié)構(gòu)
    SVN是集中式管理,git是分布式管理
  1. 其他
  • SVN使用分支比較笨拙,git可以輕松擁有無限個分支
  • SVN必須聯(lián)網(wǎng)才能正常工作,git支持本地版本控制工作
  • 舊版本的SVN會在每一個目錄置放一個.svn,git只會在根目錄擁有一個.git

工作原理


如果想了解git的工作原理,有幾個核心概念必須知道

  • 工作區(qū)(Working Directory):倉庫文件夾里除.git目錄以外的內(nèi)容

  • 版本庫(Repository):.git目錄,用于存儲記錄版本信息

  • 暫緩區(qū)(stage)

  • 分支(master):git自動創(chuàng)建的第一個分支

  • HEAD指針:用于指向當(dāng)前分支

git工作原理.png

git add和gitcommit的原理

gitadd :把文件修改添加到暫存區(qū)
git commit:把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支

工作流程


svn工作流程.png
git工作流程.png

分布式和集中式的最大區(qū)別在于:在分布式下開發(fā)者可以本地提交每個開發(fā)者機器上都有一個服務(wù)器的數(shù)據(jù)庫

git常用指令


  1. git help :git指令幫助手冊
    查看其他指令的做法:git help 其他指令
  • git config :git的配置信息相關(guān)(修改的是.git/config文件)
    配置用戶名:git config “user.name”用戶名(用于跟蹤修改記錄)
    配置郵箱:git config “user.email”郵箱(用于多人開發(fā)間的溝通)
    查看配置信息:git config –l
    編輯配置信息:git config –e(用vim編輯,:wq是退出vim編輯器)
    設(shè)置指令的別名:git config alias.別名原指令名稱
    設(shè)置帶參數(shù)指令的別名:git config alias.別名“原指令名稱 參數(shù)”
    將此設(shè)置應(yīng)用到整個系統(tǒng)中:git config ––global

  • git status :查文件的狀態(tài)
    查看某個文件的狀態(tài):git status 文件名
    查看當(dāng)前路徑所有文件的狀態(tài):git status

  • git log :查看文件的修改日志
    查看某個文件的修改日志:git log 文件名
    查看當(dāng)前路徑所有文件的修改日志:git log
    用一行的方式查看簡單的日志信息:git log ––retty=oneline
    查看最近的N次修改:gitlog –N(N是一個整數(shù))

  • git diff :查看文件最新改動的地方
    查看某個文件的最新改動的地方:git diff 文件名
    查看當(dāng)前路徑所有文件最新改動的地方:git diff

  • git init :初始化一個空的本地倉庫,生成一個.git目錄,用于維護(hù)版本信息
    在當(dāng)前路徑初始化倉庫:git init
    在其他路徑初始化倉庫:git init 倉庫路徑

  • git add :將工作區(qū)的文件保存到暫緩區(qū)
    保存某個文件到暫緩區(qū):git add 文件名
    保存當(dāng)前路徑的所有文件到暫緩區(qū):git add .(注意,最后是一個點 . )

  • git commit :將暫緩區(qū)的文件提交到當(dāng)前分支
    提交某個文件到分支:git commit -m ”注釋”文件名
    保存當(dāng)前路徑的所有文件到分支:git commit -m ”注釋”

  • git reset :版本回退(建議加上––hard參數(shù),git支持無限次后悔)
    回退到上一個版本:git reset ––hard HEAD^
    回退到上上一個版本:git reset ––hard HEAD^^
    回退到上N個版本:gitreset ––hard HEAD~N(N是一個整數(shù))
    回退到任意一個版本:git reset ––hard 版本號(版本號用7位即可)

  • git reflog :查看指令使用記錄(能夠查看所有的版本號)

  • git rm:刪除文件(刪完之后要進(jìn)行commit操作,才能同步到版本庫)

  • git clone:下載遠(yuǎn)程倉庫到本地
    下載遠(yuǎn)程倉庫到當(dāng)前路徑:git clone 倉庫的URL
    下載遠(yuǎn)程倉庫到特定路徑:git clone 倉庫的URL 存放倉庫的路徑

  • git pull:下載遠(yuǎn)程倉庫的最新信息到本地倉庫

  • git push:將本地的倉庫信息推送到遠(yuǎn)程倉庫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡介 什么是git? git是一款開源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快、最簡...
    JonesCxy閱讀 1,239評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,527評論 19 139
  • 聲明:這篇文章來源于廖雪峰老師的官方網(wǎng)站,我僅僅是作為學(xué)習(xí)之用 Git簡介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 4,108評論 3 27
  • 現(xiàn)階段4個需重點達(dá)成的事項 早睡早起——晚不超過22:30,早不晚于6:00,醒后不睡回籠覺。 及時總結(jié)回顧,根據(jù)...
    鈞鈺閱讀 383評論 0 1
  • 夏末秋初的某個下午 陽光明媚,天高云淡 南瓜藤上的小黃花 悠閑地開著 狗兒趴在它的窩旁 懶懶地睡著 樹上的知了 若...
    下一站雨會停閱讀 212評論 0 2

友情鏈接更多精彩內(nèi)容