svn 分支 用好Git和SVN,再也不怕跑路了!

2021-10-11 23:23:42 字數 3174 閱讀 2797

git 和 svn 孰優孰好,每個人都有不同的體驗。

git 是分布式的,svn是集中式的。

這是 git 和 svn 最大的區別。若能掌握這個概念,兩者區別基本搞懂大半。因為 git 式的,所以 git 支援離線工作,在本地可以進行很多操作,包括接下來將要重磅推出的分支功能。而 svn 必須聯網才能正常工作。

git 複雜概念多,svn簡單易上手

所有同時掌握 git 和 svn 的開發者都必須承認,git 的命令實在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟練掌握,還必須掌握rebase和merge的區別,fetch和pull的區別等,除此之外,還有cherry-pick,submodule,stash等功能,僅是這些名詞聽著都很繞。

在易用性這方面,svn對於新手來說會更有好一些。但是從另外一方面看,git 命令多意味著功能多,若我們能掌握大部分 git 的功能,體會到其中的奧妙,會發現再也回不去 svn 的時代了。

git 分支廉價,svn分支昂貴

在版本管理裡,分支是很常使用的功能。在發布版本前,需要發布分支,進行大需求開發,需要 feature 分支,大團隊還會有開發分支,穩定分支等。在大團隊開發過程中,常常存在建立分支,切換分支的求。

git 分支是指標指向某次提交,而 svn 分支是拷貝的目錄。這個特性使 git 的分支切換非常迅速,並且建立成本非常低。

而且 git 有本地分支,svn 無本地分支。在實際開發過程中,經常會遇到有些**沒寫完,但是需要緊急處理其他問題,若我們使用 git,便可以建立本地分支儲存沒寫完的**,待問題處理完後,再回到本地分支繼續完成**。

git 最核心的乙個概念就是工作流。

從 svn 切換到 git ,最難理解並且最不能理解的是暫存區和本地倉庫。熟練使用 git 後,會發現這簡直是神設計,由於這兩者的存在,使許多任務作變得易管理。

通常提交**分為幾步:

git add從工作區提交到暫存區

git commit從暫存區提交到本地倉庫

git push或git svn dcommit從本地倉庫提交到遠端倉庫

# 列舉所有配置

$ git config -l# 為命令配置別名

$ git config --global alias.co checkout

$ git config --global alias.ci commit

$ git config --global alias.st status

$ git config --global alias.br branch# 設定提交**時的使用者資訊

$ git config [--global] user.name "[name]"

$ git config [--global] user.email "[email address]"

git 使用者的配置檔案位於 ~/.gitconfig

git 單個倉庫的配置檔案位於 ~/$project_path/.git/config

# 新增當前目錄的所有檔案到快取區

$ git add .# 新增指定檔案到快取區

$ git add ...# 新增指定目錄到快取區,包括其子目錄

$ git add

# 刪除工作區檔案,並將這次刪除放入快取區

$ git rm [file1] [file2] ...# 停止最終指定檔案,但該檔案會保留在工作區

$ git rm --cached [file]# 改名檔案,並將這個改名放入暫存區

$ git mv [file-original] [file-renamed]

把檔名 file1 新增到 .gitignore 檔案裡,git 會停止跟蹤 file1 的狀態。

# 列出所有本地分支

$ git branch# 列出所有本地分支和遠端分支

$ git branch -a# 新建乙個分支,並切換到該分支

$ git checkout -b [new_branch] [remote-branch]# 切換到指定分支,並更新工作區

$ git checkout [branch-name]# 合併指定分支到當前分支

$ git merge [branch]# 選擇乙個commit,合併進當前分支

$ git cherry-pick [commit]# 刪除本地分支,-d 引數強制刪除分支

$ git branch -d [branch-name]# 刪除遠端分支

git push [remote] :[remote-branch]

# 提交暫存區到倉庫去

$ git commit -m [message]# 提交工作區與暫存區的變化直接到倉庫去

$ git commit -a# 提交時顯示所有 diff 資訊

$ git commit -v提交暫存區修改到倉庫去,合併到上次修改,並修改上次的提交資訊

$ git commit --amend -m [message]# 上傳本地指定分支到遠端倉庫

$ git push [remote] [remote-branch]

# 檢視工作區檔案修改狀態  

$ git status # 檢視工作區檔案修改具體內容

$ git diff [file] # 檢視暫存區檔案修改內容

$ git diff --cached [file] # 檢視版本庫修改記錄

$ git log # 檢視某人提交記錄

$ git log --author=someone # 檢視某個檔案的歷史具體修改內容

$ git log -p [file] # 檢視某次提交具體修改內容

$ git show [commit]

實際環境,git的使用的確比svn要多一點,畢竟功能要強大一些。

SVN主幹和分支的合併

1 在svn倉庫下新建專案,結構如下 project 專案名 trunks 主幹,branches 分支 tags 標籤 2 主幹內容合併到分支 分支需要改變,則右鍵分支進行合併 選擇分支目錄,選擇合併,合併兩個不同的樹,起始處 from 選擇當前目錄中需要改變的目錄或檔案的url,結束處 to 選...

SVN和Git的使用

架構圖 本地工作目錄 work directory 開發者進行開發的地方 版本倉庫 respository 儲存各個版本和維護更新 動態維護分支 功能分支再向主分支合併 checkout 第一次導下來,受到版本控制,svn import export 不受版本控制 delete revert upd...

Git和SVN的區別

如果你之前一直在使用svn來進行版本控制的操作,如果你還沒有機會試試git,我想你現在應該先了解一下它。git不僅僅是乙個版本控制系統,它也是乙個內容管理系統 cms 工作管理系統等。如果你是乙個具有使用svn背景的人,你需要做一定的思想轉換,來適應git提供的一些概念和特徵。所以,這篇文章的主要目...