成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么互聯網巨頭們紛紛使用Git而放棄SVN?

開發 前端
最近發現很多小伙伴對于工作中的一些基本工具的使用還不是很了解,比如:Git這個分布式的代碼管理倉庫,很多小伙伴就不是很了解,或者說不是很熟悉。

[[342072]]

 作者個人研發的在高并發場景下,提供的簡單、穩定、可擴展的延遲消息隊列框架,具有精準的定時任務和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業提供了精準定時調度方案,經受住了生產環境的考驗。為使更多童鞋受益,現給出開源框架地址:https://github.com/sunshinelyz/mykit-delay

寫在前面

最近發現很多小伙伴對于工作中的一些基本工具的使用還不是很了解,比如:Git這個分布式的代碼管理倉庫,很多小伙伴就不是很了解,或者說不是很熟悉。甚至有些小伙伴都沒聽說過Git,就只會用個SVN。殊不知,當今各大互聯網巨頭和新興起的互聯網黑馬公司,基本都是用的Git,而基本廢棄了對SVN的使用。為什么呢?我們一起往下看。

Git與SVN的區別

存儲方式不同

Git把內容按元數據方式存儲類似k/v數據庫,而SVN是按文件(新版SVN已改成元數據存儲)

這里,我們給出一個簡單的Git使用示例。

  1. cd .git/objects/df/ 
  2. git cat-file -p df70460b4b4aece5915caf5c68d12f560a9de56e 
  3. echo 'version1' > text.txt 
  4. git hash-object -w text.txt 

使用方式不同

從本地把文件推送遠程服務,SVN只需要commint 而Git需要 add、commint、push 三個步驟。

比如,我們使用下圖來模擬SVN的使用過程。

我們可以使用下圖來模擬Git的使用過程。

版本的管理模式不同

Git是一個分布式的版本管理系統,而要SVN是一個遠程集中式的管理系統。

例如,我們可以使用下圖來表示SVN的集中式管理。

我們可以使用下圖來表示Git的分布式管理。

Git核心命令總結

Git客戶端安裝

官方客戶端下載:https://git-scm.com/downloads

其他客戶端下載:https://tortoisegit.org/download/

Git命令的使用

(1)基于遠程倉庫克隆至本地

 

  1. git clone <remote_url> 

(2)當前目錄初始化為git 本地倉庫

 

  1. git init  <directory> 

(3)基于mvn 模板創建項目

  1. mvn archetype:generate 

本地添加

(1)添加指定文件至暫存區

 

  1. git add <fileName> 

(2)添加指定目錄至暫存區

 

  1. git add <directory> 

(3)添加所有

  1. git add -A 

(4)將指定目錄及子目錄移除出暫存區

  1. git rm --cached target -r 

(5)添加忽略配置文件 .gitignore

本地提交

(1)提交至本地倉庫

  1. git commit file -m '提交的注釋信息' 

(2)快捷提交至本地倉庫

  1. git commit -am '快捷添加與提交' 

分支管理

(1)查看當前分支

  1. git branch [-avv] 

(2)基于當前分支新建分支

  1. git branch <branch name

(3)基于提交新建分支

  1. git branch <branch name> <commit id> 
  2. $ git branch -d {dev} 

(4)切換分支

  1. git checkout <branch name

(5)合并分支

 

  1. git merge <merge target> 

(6)解決沖突

如果因沖突導致自動合并失敗,此時 status 為mergeing 狀態。需要手動修改后重新提交(commit)

遠程倉庫管理

(1)查看遠程配置

  1. git remote [-v] 

(2)添加遠程地址

  1. git remote add origin http:xxx.xxx 

(3)刪除遠程地址

  1. git remote remove origin  

(4)上傳新分支至遠程

  1. git push --set-upstream origin master  

(5)將本地分支與遠程建立關聯

  1. git branch --track --set-upstream-to=origin/test test 

Tag管理

(1)查看當前

  1. git tag 

(2)創建分支

  1. git tag <tag name> <branch name

(3)刪除分支

 

  1. git tag -d <tag name

日志管理

(1)查看當前分支下所有提交日志

  1. git log 

(2)查看當前分支下所有提交日志

  1. git log {branch} 

(3)單行顯示日志

  1. git log --oneline 

(4)比較兩個版本的區別

  1. git log master..experiment 

(5)以圖表的方式顯示提交合并網絡

  1. git log --pretty=format:'%h %s' --graph 

Git底層原理

GIT存儲對像(hashMap)

Git 是一個內容尋址文件系統,其核心部分是一個簡單的鍵值對數據庫(key-value data store),你可以向數據庫中插入任意內容,它會返回一個用于取回該值的hash 鍵。

(1) Git 鍵值庫中插入數據

  1. echo 'binghe' | git hash-object -w --stdin 79362d07cf264f8078b489a47132afbc73f87b9a 

(2)基于鍵獲取指定內容

  1. git cat-file -p 79362d07cf264f8078b489a47132afbc73f87b9a 

Git基于該功能 把每個文件的版本中內容都保存在數據庫中,當要進行版本回滾的時候就通過其中一個鍵將其取回并替換。

Git版本寫入與回滾過程

(1)查找所有的git 對像

  1. find .git/objects/ -type f 

(2)寫入版本1

  1. echo 'version1' > README.MF; git hash-object -w README.MF; 

(3)寫入版本2

  1. echo 'version2' > README.MF; git hash-object -w README.MF; 

(4)寫入版本3

  1. echo 'version3' > README.MF; git hash-object -w README.MF; 

(5)回滾指定版本

  1. git cat-file -p c11e96db44f7f3bc4c608aa7d7cd9ba4ab25066e > README.MF 

所以我們平常用的 git add 其實就是把修改之后的內容 插入到鍵值庫中。當我們執行 git add README.MF 等同于執行了 git hash-object -w README.MF 把文件寫到數據庫中。

我們解決了存儲的問題,但其只能存儲內容同并沒有存儲文件名,如果要進行回滾 怎么知道哪個內容對應哪個文件呢?接下要我們就看下樹對象,它解決了文件名存儲的問題 。

Git樹對象

樹對像解決了文件名的問題,它的目的將多個文件名組織在一起,其內包含多個文件名稱與其對應的Key和其它樹對像的用引用,可以理解成操作系統當中的文件夾,一個文件夾包含多個文件和多個其它文件夾。

每一個分支當中都關聯了一個樹對像,他存儲了當前分支下所有的文件名及對應的 key。通過以下命令即可查看

  1. git cat-file -p master^{tree}  

Git提交對象

一次提交即為當前版本的一個快照,該快照就是通過提交對像保存,其存儲的內容為:一個頂級樹對象、上一次提交的對像啥希、提交者用戶名及郵箱、提交時間戳、提交評論。

  1. $ git cat-file -p b2395925b5f1c12bf8cb9602f05fc8d580311836  
  2. tree 002adb8152f7cd49f400a0480ef2d4c09b060c07  
  3. parent 8be903f5e1046b851117a21cdc3c80bdcaf97570  
  4. author binghe <binghe@gmail.com> 1532959457 +0800  
  5. committer binghe <binghe@gmail.com> 1532959457 +0800  

綜上,我們可以推測出從修改一個文件到提交的過程總共生成了三個對象:

  • 一個內容對象:存儲了文件內容
  • 一個樹對像:存儲了文件名及內容對像的key
  • 一個提交對像:存儲了樹對像的key 及提交評論。

Git引用

當我們執行 git branch {branchName} 時創建了一個分支,其本質就是在git 基于指定提交創建了一個引用文件,保存在 .git\refs\heads\ 下。

(1)創建分支

  1. git branch dev  
  2. cat.git\refs\heads\dev 

Git總共 有三種類型的引用:

  • 分支引用
  • 遠程分支引用
  • 標簽引用

(2)查詢比較兩個版本

  1. git log master..experiment 

(3)版本提交歷史網絡

  1. git log --pretty=format:'%h %s' --graph 

(4)查看分支樹

  1. git cat-file -p master^{tree} 

本文轉載自微信公眾號「冰河技術」,可以通過以下二維碼關注。轉載本文請聯系冰河技術公眾號。 

 

責任編輯:武曉燕 來源: 冰河技術
相關推薦

2015-03-30 15:37:57

CDN運營商騰訊

2018-05-07 11:26:01

2013-08-05 10:54:05

移動互聯網入口移動互聯網移動市場

2020-07-29 12:02:00

互聯網智慧農業巨頭

2015-04-02 10:37:48

互聯網愚人節

2021-06-24 10:04:33

互聯網AB測試

2012-05-28 17:34:38

瀏覽器互聯網

2019-11-26 14:47:32

互聯網云計算云服務

2019-02-27 10:52:14

互聯網擴招裁員

2021-02-08 23:10:08

春晚紅包互聯網

2021-02-15 15:41:41

互聯網春晚流量

2015-11-16 14:08:39

醫療行業互聯網

2015-05-04 13:57:20

SDN騰訊華三通信

2022-01-14 06:55:11

web3.0互聯網 Web

2013-12-08 21:19:03

2020-10-22 15:23:29

自動駕駛技術5G

2012-03-12 10:01:21

2021-02-18 00:38:17

互聯網春晚紅包

2018-03-26 09:55:34

區塊鏈

2019-09-09 09:29:27

互聯網程序員職業
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天综合网天天综合 | 欧美精品第一页 | 一区二区三区视频在线免费观看 | 一区二区三区成人 | 亚洲欧美综合 | 国产高清精品网站 | 久久99精品国产麻豆婷婷 | 亚洲一区二区三区在线 | 日韩中文一区二区三区 | 日韩av免费看 | 91久久久精品国产一区二区蜜臀 | 日韩在线观看一区 | 欧美久久久久久久久中文字幕 | 日韩欧美国产不卡 | 欧洲性生活视频 | 欧美一区二区三区视频 | 欧美日韩成人 | 国产精品久久久久久久午夜片 | 成人精品一区 | 日韩欧美视频 | 国产精品91网站 | 国产福利在线 | 午夜婷婷激情 | 久久精品一区 | 蜜桃特黄a∨片免费观看 | 欧美一区二区三区,视频 | 国产www成人 | 亚洲精品一区二区 | 在线精品亚洲欧美日韩国产 | 天天av天天好逼 | 精品国产免费一区二区三区演员表 | av中文在线 | 免费观看一级特黄欧美大片 | 欧美888 | 涩涩鲁亚洲精品一区二区 | 欧美黑人一级爽快片淫片高清 | 久久网国产 | 亚洲精品一区二区在线 | 亚洲国产中文字幕 | 欧洲妇女成人淫片aaa视频 | 四虎成人在线播放 |