簡介
什么是git贪染?
- git是一款開源的分布式版本控制工具
- 在世界上所有的分布式版本控制工具中缓呛,git是最快、最簡單杭隙、最流行的
git的起源
- 作者是Linux之父:Linus Benedict Torvalds
- 當初開發(fā)git僅僅是為了輔助Linux內(nèi)核的開發(fā)(管理源代碼)
git的現(xiàn)狀
- 在國外已經(jīng)非常普及哟绊,國內(nèi)并未普及(在慢慢普及)
- 越來越多的開源項目已經(jīng)轉(zhuǎn)移到git
其他版本控制工具
CVS
最早的開源、免費的集中式版本控制工具
自身設計有問題痰憎,會造成提交文件不完整票髓,版本庫莫名其妙損壞的情況SVN
p修正了CVS的一些穩(wěn)定性問題攀涵,是目前用得最多的集中式版本庫控制工具ClearCase
收費的集中式版本控制工具,安裝比Windows還大洽沟,運行比蝸牛還慢
能用ClearCase的一般是世界500強以故,他們有個共同的特點是財大氣粗或者人傻錢多VSS
微軟的集中式版本控制工具,集成在Visual Studio中
集中式版本控制
分布式版本控制
git和SVN的簡單對比
- 速度
在很多情況下裆操,git的速度遠遠比SVN快
- 結(jié)構(gòu)
SVN是集中式管理怒详,git是分布式管理
- 其他
- 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指針:用于指向當前分支
git add和gitcommit的原理
gitadd :把文件修改添加到暫存區(qū)
git commit:把暫存區(qū)的所有內(nèi)容提交到當前分支
工作流程
分布式和集中式的最大區(qū)別在于:在分布式下開發(fā)者可以本地提交每個開發(fā)者機器上都有一個服務器的數(shù)據(jù)庫
git常用指令
- git help :git指令幫助手冊
查看其他指令的做法:git help 其他指令
git config :git的配置信息相關(修改的是.git/config文件)
配置用戶名:git config “user.name”用戶名(用于跟蹤修改記錄)
配置郵箱:git config “user.email”郵箱(用于多人開發(fā)間的溝通)
查看配置信息:git config –l
編輯配置信息:git config –e(用vim編輯善玫,:wq是退出vim編輯器)
設置指令的別名:git config alias.別名原指令名稱
設置帶參數(shù)指令的別名:git config alias.別名“原指令名稱 參數(shù)”
將此設置應用到整個系統(tǒng)中:git config ––globalgit status :查文件的狀態(tài)
查看某個文件的狀態(tài):git status 文件名
查看當前路徑所有文件的狀態(tài):git statusgit log :查看文件的修改日志
查看某個文件的修改日志:git log 文件名
查看當前路徑所有文件的修改日志:git log
用一行的方式查看簡單的日志信息:git log ––retty=oneline
查看最近的N次修改:gitlog –N(N是一個整數(shù))git diff :查看文件最新改動的地方
查看某個文件的最新改動的地方:git diff 文件名
查看當前路徑所有文件最新改動的地方:git diffgit init :初始化一個空的本地倉庫,生成一個.git目錄密强,用于維護版本信息
在當前路徑初始化倉庫:git init
在其他路徑初始化倉庫:git init 倉庫路徑git add :將工作區(qū)的文件保存到暫緩區(qū)
保存某個文件到暫緩區(qū):git add 文件名
保存當前路徑的所有文件到暫緩區(qū):git add .(注意茅郎,最后是一個點 . )git commit :將暫緩區(qū)的文件提交到當前分支
提交某個文件到分支:git commit -m ”注釋”文件名
保存當前路徑的所有文件到分支: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:刪除文件(刪完之后要進行commit操作或渤,才能同步到版本庫)
git clone:下載遠程倉庫到本地
下載遠程倉庫到當前路徑:git clone 倉庫的URL
下載遠程倉庫到特定路徑:git clone 倉庫的URL 存放倉庫的路徑git pull:下載遠程倉庫的最新信息到本地倉庫
git push:將本地的倉庫信息推送到遠程倉庫