Git 相關(guān)

Git和SVN區(qū)別

Git是分布式的,SVN是集成式的

這個(gè)是Git和SVN最大的區(qū)別。
SVN:


872610-20180608145946789-1176396152.png

·SVN的版本管理有一個(gè)唯一的URL,每一個(gè)用戶都是從這個(gè)地址獲取代碼和數(shù)據(jù),
·同樣提交的的話也是對(duì)這個(gè)唯一的版本庫進(jìn)行更改
·沒有網(wǎng)絡(luò)的話,就沒有辦法進(jìn)行提交文件,無法還原,查看歷史記錄差異
·提交需要授權(quán),方便進(jìn)行權(quán)限管理
Git:


872610-20180608150004492-762162766.png

·每個(gè)clone版本庫都是平等的??梢詮娜魏我粋€(gè)版本庫來克隆屬于自己的版本庫,同時(shí)自己的庫也可以當(dāng)作源來提供給他人。
·可以脫離網(wǎng)絡(luò)時(shí)正常使用版本庫,只需要有網(wǎng)時(shí)推送PUSH一下,和服務(wù)器保持同步
·Git創(chuàng)建功能分支方便

在我剛進(jìn)公司時(shí)我們項(xiàng)目使用的是SVN進(jìn)行版本管理,后期進(jìn)行替換到了Git。從我的角度來看引入git最主要的優(yōu)勢(shì)就是更加方便的進(jìn)行功能分支管理,和斷網(wǎng)不影響正常的功能使用。在我們的后期開發(fā)中需要進(jìn)行大量的創(chuàng)建feature功能分支,切換分支的操作,因?yàn)镚it分支是指針指向某次提交,而SVN分支是拷貝目錄,所以git創(chuàng)建和切換的成本很低。

Git 的常用操作

日常使用,我通常是可視化界面和命令行方式結(jié)合使用
可視化操作通過Sourcetree來操作


image.png

其實(shí)日常的一些提交 commit,推送 push,拉取 pull 通過sourcetree都可以進(jìn)行很方便的操作,但是一些操作還是命令行更方便,如:squash merge,rebase ,cheery-pick 等等

目前我們項(xiàng)目定的規(guī)范是,在日常拉取時(shí)使用rebase來代替合并,在進(jìn)行不同分支間的合并時(shí)也盡量使用squash;
主要目的時(shí)為了跟清晰的版本線管理,因?yàn)?,直接使用合并的話可能?huì)導(dǎo)致創(chuàng)建一些自動(dòng)提交,讓版本線變得復(fù)雜,不容易回溯問題。


image.png

這個(gè)是我們期望的結(jié)果,一條線拉下來


image.png

這個(gè)是不希望的,會(huì)拉出很多其他分支,不方便查看

一般來說,一個(gè)功能分支在進(jìn)行一段時(shí)間的開發(fā)之后,我們會(huì)同步一下dev主干上的內(nèi)容,防止版本差異過大導(dǎo)致后期合并時(shí)沖突過多。我們會(huì)先從dev拉取一個(gè)最新的分支命名為對(duì)應(yīng)的功能分支名如:feature_1.x,再把對(duì)應(yīng)的分支功能合并到這個(gè)分支上,通過升級(jí)的方式來進(jìn)行分支同步。

關(guān)于merge和rebase的區(qū)別具體的可以看看這個(gè):
https://blog.csdn.net/hudashi/article/details/7664631
這里我只簡(jiǎn)單的貼兩張圖

image.png

merge 會(huì)產(chǎn)生一個(gè) merge commit ,在分支線的表現(xiàn)看起來就是“分叉了”
image.png

而使用 rebase 就可以避免這個(gè)問題

git --help                       //列出常用的git命令
git branch                     //輸出本地分支
git brach 分支名           //創(chuàng)建新的分支

git checkout 分支名                   //切換分支
git checkout -b mybranch         //創(chuàng)建并切換分支

git merge --squash 分支名        //把分支上的提交合并成一次提交,變動(dòng)存到本地分支,所以還需要手動(dòng)提 
                                                    交一次;之前的提交日志記錄沒了,會(huì)被這個(gè)新的提交覆蓋掉
git cherry-pick <HashA> <HashB>     //將A和B提交應(yīng)用到當(dāng)前分支
git cherry-pick A..B                             //左開右閉
git cherry-pick A^..B                           //包括A
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Git是我們最常用的代碼版本管理工具,它的功能強(qiáng)大,靈活多變,最難的就是掌握它的命令了。 GIT & SVN Gi...
    老鼠AI大米_Java全棧閱讀 320評(píng)論 0 2
  • 一、git 1、git是什么? (1)git是版本管理、團(tuán)隊(duì)合作開發(fā)工具(2)和svn的區(qū)別是:git是分布式管理...
    Grayly吖閱讀 687評(píng)論 0 0
  • https://backlog.com/git-tutorial/cn/intro/intro1_1.htmlht...
    zZ小菜鳥閱讀 843評(píng)論 0 0
  • 1.文檔地址 1.git簡(jiǎn)易教程 2 .廖雪峰git教程 2.git是什么 1.版本管理、團(tuán)隊(duì)合作開發(fā)工...
    確實(shí)不錯(cuò)閱讀 325評(píng)論 0 0
  • 文檔地址git簡(jiǎn)易教程廖雪峰git教程 git是什么版本管理、團(tuán)隊(duì)合作開發(fā)工具和svn的區(qū)別是:它是分布式管理 代...
    落葉荼閱讀 222評(píng)論 0 0

友情鏈接更多精彩內(nèi)容