svn與git操作對比 (未來有空做一個 svn與git實戰對比 )
svn是集中式的,git是分布式的,但是我們日常使用的都是按照集中式唯一服務器倉庫的方式來去做的,最終我們的代碼都要提交到一個唯一倉庫中。
他們最大的區別是本地工作拷貝的工作方式不同,
一、svn本地工作拷貝,包括分支都是目錄,直截了當,看到的就是服務器的,svn update 更新服務器到本地;svn commit 就是提交到服務器
二、git與svn對比,本地工作拷貝的工作方式就大大不同了,git主要是分支 有本地分支 和遠程分支,也就是 local(即branch) 和remote 的區別,可以使用命令:
git remote -v #查看git倉庫關聯的遠程分支,可以有多個,都有別名(例如 origin 對應著遠程的 [email protected]/project/server.git)
git branch -v #查看本地分支,本地分支 可選設置 《上遊分支》
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
如 git branch master --set-upstream-to origin/master #設置本地的master 的上遊分支為 origin/master
分支 master 設置為跟蹤來自 origin 的遠程分支 master。
git status #查看當前分支的修改狀態,並且 也可以查看 對應的 《上遊分支》的信息,如下圖 紅字所示。
位於分支 master
您的分支與上遊分支 ‘origin/master‘ 一致。
要提交的變更:
(使用 "git reset HEAD <文件>..." 以取消暫存)
新文件: pbtest/package_depends.sh
尚未暫存以備提交的變更:
(使用 "git add <文件>..." 更新要提交的內容)
(使用 "git checkout -- <文件>..." 丟棄工作區的改動)
修改: model/sql/main_db.sql
修改: model/sql/server_db.sql
未跟蹤的文件:
(使用 "git add <文件>..." 以包含要提交的內容)
.gitignore
.vscode/
api/protocol_test.go
可以使用
git branch --unset-upstream [<branchname>]
命令來刪除當前分支的 《上遊分支》
如 git branch --unset-upstream master
再次使用git status 就會發現,少了
您的分支與上遊分支 ‘origin/master‘ 一致。
這一行了。
三、svn info 所顯示了當前工作拷貝的服務器端與本地信息,git沒有info的指令,但是我們可以組合,那就是 git remote -v +git status + git log -1 ;
svn與git操作對比 (未來有空做一個 svn與git實戰對比 )