中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

從VSS到SVN再到Git 記Git的基本操作

發布時間:2020-07-09 20:38:11 來源:網絡 閱讀:545 作者:ScottX 欄目:系統運維

Source code control 一直是軟件開發過程中重要的環節,從最初的純文件備份,到使用工具進行管理。Source code control 工具的作用也不僅僅只是單純的對同一個版本進行管理了。從目前主流的source code control工具當中不難發現里面的Branch, tag等功能的應用場景越來越多,特別是現在多數企業使用的敏捷編程,結合branch和tag等功能真的能夠很好的做到多版本開發,快速迭代。

思考: 沒有source code control我們如何快速的基于一份代碼同時進行多個功能的并行開發。

回過頭來說下本人在行業當中所用到的幾款source code control工具。

VSS

從VSS到SVN再到Git 記Git的基本操作

VSS(Visual Source Salf),是一款微軟提供的代碼管理工具,作為Visual Studio的一員,在早期的開發過程當中確實能夠確保代碼不被開發人員錯誤的修改,也解決了異地開發協作的代碼共享管理的難點。但是依舊有一些不足,比如:

  • 文件基本以獨占的形勢進行鎖定。如果A在修改的時候B沒有辦法進行修改。

  • VSS只支持Windows版本,支持的開發工具僅支持微軟系。

  • 基于文件存儲,服務器必須共享文件夾。安全性值得考慮。以前一般用于內網開發環境。

  • 收費

SVN

從VSS到SVN再到Git 記Git的基本操作

SVN(Subversion),一個開源的source code control system。除開最基本的如VSS提供的代碼管理功能外,最大的亮點是提供了分支,且提交內容的級別基于代碼行了。也就是說,不用再有獨占文件開發的問題了。比如,一個實現接口的代碼文件可以由多個開發人員同時修改。誰先做完誰可以先進行提交,不會等到必須所有的人做完后再進行合并。對于不能使用VSS的工程師來說,SVN的出現完全是一個福音,直接從CVS跳到了這么強大的工具上。
總結一下,SVN的優劣如下:

  • 優勢

    • 代碼一致性高。

    • 支持提交事物性操作。

    • Diff 功能。

    • Branch,Tag的引用,方便版本管理。

    • 輕松上手。

  • 劣勢

    • 必須是聯網狀態下才可以進行一些數據的讀取。

    • 不是分布式的代碼庫。

    • SVN服務器崩潰的災難是巨大的。

Git

從VSS到SVN再到Git 記Git的基本操作

隨著開源運動的流行(Liunx開發人員的功勞),Git也就這么流行起來的。說是在隨著開源運動的流行而流行起Git的呢?這歸功于Git的分布式這一特性。試想,如果全世界所有的Liunx愛好者都在幾臺機器上進行開發和提交,這酸爽不敢想象。抑或是主服務器崩潰了,那么其他的開發人員也只有淚奔。
Git的牛逼之處在于以下:

  • 每一次Clone就是從服務器上pull到了所有的內容,包括版本信息。

  • 在本地可以根據不同的需要,本地新建自己的分支。

  • 分支之間的任意切換。

  • 單機上就可以進行分支合并。

  • 牛人+插件加持。 Git flow, 按Vincent Driessen 分支模型提供的一個插件.


從VSS到SVN再到Git 記Git的基本操作

git-model@2x.png

A successful Git branching model

如何使用Git

  1. 安裝

  2. $ Brew install git

  3. 創建倉庫

  4. $ git init

  5. 文件操作

    有了倉庫后就可以對文件進行 add , commit, push 和pull等操作了。

TablesAre
git add添加至暫存區
git add–interactive交互式添加
git apply應用補丁
git am應用郵件格式補丁
git annotate同義詞,等同于 git blame
git archive文件歸檔打包
git bisect二分查找
git blame文件逐行追溯
git branch分支管理
git cat-file版本庫對象研究工具
git checkout檢出到工作區、切換或創建分支
git cherry-pick提交揀選
git citool圖形化提交,相當于 git gui 命令
git clean清除工作區未跟蹤文件
git clone克隆版本庫
git commit提交
git config查詢和修改配置
git describe通過里程碑直觀地顯示提交ID
git diff差異比較
git difftool調用圖形化差異比較工具
git fetch獲取遠程版本庫的提交
git format-patch創建郵件格式的補丁文件。參見 git am 命令
git grep文件內容搜索定位工具
git gui基于Tcl/Tk的圖形化工具,側重提交等操作
git help幫助
git init版本庫初始化
git init-db*同義詞,等同于 git init
git log顯示提交日志
git merge分支合并
git mergetool圖形化沖突解決
git mv重命名
git pull拉回遠程版本庫的提交
git push推送至遠程版本庫
git rebase分支變基
git rebase–interactive交互式分支變基
git reflog分支等引用變更記錄管理
git remote遠程版本庫管理
git repo-config*同義詞,等同于 git config
git reset重置改變分支“游標”指向
git rev-parse將各種引用表示法轉換為哈希值等
git revert反轉提交
git rm刪除文件
git show顯示各種類型的對象
git stage*同義詞,等同于 git add
git stash保存和恢復進度
git status顯示工作區文件狀態
git tag里程碑管理

.
.

Best practice

從VSS到SVN再到Git 記Git的基本操作

建議使用github進行上手實驗。使用郵箱注冊一次Git hub后即可在Github上創建自己的Repository.

從VSS到SVN再到Git 記Git的基本操作

2.png

創建完成后,我們會得到一個Repository的地址。有了這個地址我們就可以進行Git的練習了。

從VSS到SVN再到Git 記Git的基本操作

3.png

  • 使用 git clone 將遠程倉庫clone到本地。

     git clone

從VSS到SVN再到Git 記Git的基本操作

5.png

  • 添加一些文件

  echo "Hello Scott" -> "Hello"   //寫了一個文件到Hello
  git add Hello // 將Hello文件添加到暫存區。(Index)
  git commit -m "this is my first file" // 提交到本地倉庫
  git push  //推送本地倉庫到遠程倉庫

從VSS到SVN再到Git 記Git的基本操作

6.png

以上,文件就被推送到了遠程倉庫。其他工程師如果執行Pull操作的話即可把變動的文件拉到本地。

從VSS到SVN再到Git 記Git的基本操作

7.png

  • 如果有其他工程師修改了文件,需要遠程獲取下。

     git pull  //拉取遠端文件
     git log //可以查看變更歷史

從VSS到SVN再到Git 記Git的基本操作

A5B85BFD-764E-468F-81C4-0B727BA70428.png

  • 沖突的解決
    沖突往往是因為版本不一致而產生。如工程師A修改了Hello文件并提交到遠端倉庫,而B在本地修改了Hello,也想提交。由于A和B的Hello文件并不一致,所以沖突產生了。

從VSS到SVN再到Git 記Git的基本操作

4EB9EB75-2FF9-4363-AD78-9E13D1415EA8.png

只需要git pull一次即可。 (注:git pull 會自動merge,但是通常情況下自動merge效果不會太好。比如A和B 都在修改function A (){} )
沖突長這模樣。

從VSS到SVN再到Git 記Git的基本操作

10.png

一般手動解決沖突后,重新添加,提交,push即可。

從VSS到SVN再到Git 記Git的基本操作

11.png

如上描述,手動合并沖突比較麻煩。建議使用工具進行git 的操作,現在一般的工具都提供了分支管理,合并等功能。
推薦 SourceTree

分支的管理

在很多時候會遇到同時需要開發多個功能,開發任務將會交給多個工程師進行開發,這個時候在Git上的實踐為-->創建多個分支。 N個工程師從Master或Dev分支進行分支創建。

git checkout -b NewFeature   // 分支建好后,會直接切換到該分支。git push --set-upstream origin NewFeature //與遠程分支關聯

完成開發后,需要合并到Master 或Dev 分支。

  git merge origin/NewFeature  // 將遠程分支NewFeature與當前分支合并。

從VSS到SVN再到Git 記Git的基本操作

12.png

寫在最后

以上從source code control擴散到Git的使用,僅僅只是拋磚引玉。歡迎大家多多指教。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

米林县| 宜川县| 忻城县| 白山市| 永和县| 新竹县| 呈贡县| 长泰县| 麦盖提县| 荔浦县| 盘锦市| 宁陕县| 屏南县| 安康市| 隆尧县| 西林县| 南宫市| 专栏| 安平县| 孟津县| 社旗县| 巴林右旗| 六枝特区| 崇礼县| 永和县| 新蔡县| 禹城市| 土默特左旗| 通海县| 长沙县| 广平县| 顺昌县| 尼勒克县| 湘潭县| 句容市| 西乌| 彰化市| 和龙市| 大竹县| 资讯| 岑巩县|