Git--介紹
1、為什麼我們需要git?
進行版本管理
- 舉例:你在大學中寫論文
- 寫論文的時候會出現很多個版本,每個版本都有自己特點
- 論文v1.doc:最基本的論文框架
- 論文v2.doc:新增了一個段落
- 論文v3.doc:修改了一行
- 論文v4.doc:新增的那個段落刪除,保留的修改的那一行,再修改一行
- 論文v5.doc:恢復刪除的那個段落,保留修改的行
- 問題1:如果我想
回到某個版本
怎麼辦?- 手動的管理和記錄每個版本之間的變化
- 問題2:如果我讓別人幫我寫,我自己也寫,我想將
別人寫的部分和我寫的部分合並
怎麼辦?- 論文有10個部分,10個人來寫,我需要合併
- 我覺得有個人寫的不好,我要重寫它的,再合併
- 問題3:所有的操作都在
手動管理,極其容易出現錯誤
- 專案開發會存在同樣的問題
- 整個專案由多個人共同開發,每個人開發的模組可能一樣也可能不一樣
- 不一樣:每個人負責不同的 功能模組
- 一樣:多個人共同負責一個模組
- 問題4:程式碼會產生多個版本,版本如何控制?
畢竟需求有時候不是那麼明確的啊~~~
- 這個版本中沒有這個功能,但是我下個版本想要這個功能,下下一個版本這個功能又不需要了
產品
- v1:A、B
- 原來的版本,有A和B兩個功能
- v2:A、C
- 去掉了B功能,新增了C功能
- v3:A、B、C
- 新增了B這個功能
- 如何實現多個人共同開發一個專案,能將專案的多個版本進行自由方便的管理
- 甲:今天開發了一個版本,儲存這個版本
- 乙:基於甲昨天開發的版本,進行繼續開發
- 丙:負責開發另外一個版本
2、git的誕生
- 專案版本管理工具:
能自動的將多個版本進行儲存,類似於快照,多個人共享版本
- Git:分散式專案管理工具,目前整個行業內最流行最受歡迎的專案版本管理工具
- 開發者:Linus Torvalds
- 小故事開講
- Linux誕生以後,全球很多開發者開發了 很多個版本的Linux,提交給Linus Torvalds
- Linus Torvalds 將優秀的程式碼整合在Linux核心中,手動管理所有的程式碼
- Linus Torvalds 不喜歡傳統的免費CVS等工具,因為這些工具不好用,好用的都收費
- Linus Torvalds 選擇了一個商業化的工具,達成協議–>可以免費使用
- 於是團隊中的一個哥們有個想法:–>能不能破解這個東西?
- 被發現了–>Linus Torvalds 保證不再破解
- 兩週以後,Linus Torvalds 自己用C語言開發了Git,使用了類似於Linux的管理方式
- Linus Torvalds :將Linux的版本控制切換到Git上
- Git的開發
汲取了其他的版本控制工具的優點,避免了缺點
大佬的思維啊~~~
3、版本控制工具的對比
集中式:SVN
- 所有版本的程式碼都集中在SVN的伺服器上
- 任何一個開發者,都只能連線SVN伺服器,下載程式碼和上傳新的版本
- 集中式:所有的開發都圍繞SVN伺服器為核心
- 缺點
必須聯網
- 區域網:還是比較快的,但是回家以後就沒辦法開發了
- 在公司下載好
- 回家開發,只能開發一個版本
- 回到公司上傳這個版本
- 網際網路:
特別慢
- 在任何一個地方連線SVN伺服器,進行下載和上傳
- 自己無法自動管理多個版本
- SVN伺服器存在
單點故障
分散式:Git
- 去中心化模式
- 優點
不需要聯網
,自己的筆記本就是個本地版本庫,直接利用自己的筆記本實現版本的管理- 自己可以管理任意多個版本
- 不需要擔心公共的版本庫故障,
每個人的本地都有版本庫
4、特點
- 適合於
分散式開發
,多人可以共同開發,強調個體 - 公共的版本庫伺服器的壓力不會太大
速度快、更加靈活
- 任意的開發者之間如果
產生衝突也容易解決
不需要聯網
也可以實現多版本管理
相關文章
- 介紹
- Proxy介紹
- Reflect介紹
- Azkaban介紹
- 模式介紹模式
- ZooKeeper介紹
- css介紹CSS
- PostgreSQLHooK介紹SQLHook
- DuelJS 介紹JS
- Docker介紹Docker
- StarRocks 介紹
- JCache 介紹
- zigbee 介紹
- GO 介紹Go
- RPC介紹RPC
- springcloud介紹SpringGCCloud
- CSRedisCore 介紹Redis
- AJAX 介紹
- php介紹PHP
- Pyzmq介紹MQ
- uniswap介紹
- LDAP 介紹LDA
- rustyline 介紹Rust
- SpringBoot介紹Spring Boot
- JSON 介紹JSON
- BitMap介紹
- Yocto 介紹
- 自我介紹
- git介紹Git
- FontFamily介紹
- Dubbo介紹
- Duktape 介紹
- jsoncpp 介紹JSON
- 公文介紹
- MySql介紹MySql
- Ceph介紹
- Ninja介紹
- weex介紹