GIT與 SVN的區別及其常用指令

2021-10-03 01:37:19 字數 2248 閱讀 7678

svn更適用於專案管理, git僅適用於**管理。

git是分布式的版本系統,而svn是集中式的版本管理系統

理解:

git本身也有乙個集中式的伺服器(但它不是必須,沒有它大家一樣可以交換**工作,只是實際工作中有能有人請假或者有事交換不了**,集中式的**交換只是能夠便於工作),但它更傾向於分布式的版本管理,每乙個轉殖遠端的**之後會在本地專案中有乙個跟遠端中心版本庫一模一樣的版本本地**版本庫,有了這個版本庫,git即使在斷網或者遠端版本有問題的時候的情況下也可以自如的進行本地版本管理,如檢視版本記錄,在本地提交**,打分支等操作,而在同樣的情況下,svn本地專案則執行不了和版本管理有關的事情,svn的每一次commit或者檢視版本記錄都需要在聯網狀態下,雖然不影響本地開發,但長時間沒有commit的**就像word文件沒有儲存功能一樣危險

頻繁的commit能夠在我們需要版本回退或者撈取特定**的時候輕鬆快捷。

git轉殖乙個同乙個專案遠比svn快得多

以轉殖乙份擁有五個分支的完整專案以及版本庫來說,svn是同時複製5個版本的檔案,也就是說重複五次同樣的動作。而git 只是獲取檔案的每個版本的元素,然後只載入主要的分支(master)在我的經驗,轉殖乙個擁有將近一萬個提交(commit),五個分支,每個分支有大約1500個檔案的 svn,耗了將近乙個小時!而git只用了區區的1分鐘。

git 比svn更適合多人協作的專案

svn 版本管理的專案如果需要建立乙個分支,那參與專案的人即使他們並不需要,但每乙個人都有有一樣的分支,此分支一需要需要,其他人就必須重新切分支重新下在,這樣的管理方式有時對穩定版本的**影響是巨大的;

而git管理的專案,每個參與專案的人只要還沒有push到遠端master,自己可以在本地**庫無限次切分支做修改,想怎麼玩就怎麼玩,只要最後提交上遠端的**是正常的,本地的操作不會影響其他人;

1.拉取遠端分支

git fetch --all
2.建立本地分支並關聯遠端分支

git checkout -b 0225 company/working
3.把某個commit合併到某個分支上

git log   /

/獲取當前要合併的commit-id(取前6位)

git checkout master

git cherry-pick 45b34de

4.合併前兩個commit

5.版本回退到某個版本

git log   /

/ 拿到要回退到哪的commit id

git reset --hard id

git reset --hard head^ /

/ 回退到上乙個版本

6.把當前某個分支的改變合併到指定的分支

// 想把a分支的改變合併到b分支的改變,切換到目標分支

git checkout b

git merge a

如果**沒有任何新變化,則用來改寫上一次commit的提交資訊

git commit --amend -m [message]
列出所有本地分支 ,列出所有遠端分支, 列出所有本地分支和遠端分支

git branch -v

git branch -r

git branch -a

切換到上一分支

git checkout -
刪除分支

git branch -d [branch-name]

//刪除本地分支

git push origin --delete [branch-name]

//刪除遠端分支

Svn與Git的區別

這篇主要是談談兩者的區別,至於誰優誰劣看官自己思考吧!把第一條理解到位思想到位了做起來才會有的放矢,其他幾條都是用的時候才能體會到 1 最核心的區別git是分布式的,而svn不是分布的。能理解這點,上手會很容易,宣告一點git並不是目前唯一的分布式版本控制系統,還有比如mercurial等,所以說它...

Svn與Git的區別

1 最核心的區別git是分布式的,而svn不是分布的。能理解這點,上手會很容易,宣告一點git並不是目前唯一的分布式版本控制系統,還有比如mercurial等,所以說它們差不許多。話說回來git跟svn一樣有自己的集中式版本庫和server端,但git更傾向於分布式開發,因為每乙個開發人員的電腦上都...

Git與SVN的區別

如果你在讀這篇文章,說明你跟大多數開發者一樣對git感興趣,如果你還沒有機會來試一試git,我想現在你就要了解它了。git不僅僅是個版本控制系統,它也是個內容管理系統 cms 工作管理系統等。如果你是乙個具有使用svn背景的人,你需要做一定的思想轉換,來適應git提供的一些概念和特徵。所以,這篇文章...