git、svn、git flow、zsh(脚本编辑器)

git(分布式) 和 svn (集中式)都是版本控制器。

个人观点而言,这两都对比之下,我更喜欢 git操作, svn 很多方面我觉得不如 git。为什么这么说呢,举几个例子吧。

参考 git 网站 : https://learngitbranching.js.org/

下面简单的介绍:

关于 git 操作:


1、有几个专用的术语:
        Workspace:    工作区
        Index / Stage :    暂存区 
        Remote:    远程仓库

2、什么是git?
    github 是为 git 提供一个仓库的拖管服务。可以共享代码。
    在 github 上用户所有的文字功能都可以用 github flavored markdown (CFM)语法。而且现在很多服务都兼容 markdown。

3、github 中的描述方法可以用:
        @用户名
        @组织名

4、github 提供的主要功能有哪些?
        a、git仓库
        b、organization
        c、Issue 
            将一个任务或者问题分给一个 Issue 进行追踪和管理功能。
        d、wiki
            任何一个人随时都可以对文章进行编写和保存,很多人可以共同完成一个文章。
        e、pullrequest
            仓库推送更改或者功能添加后。可以通过 pull  request 功能向别人仓库提出请求要求合并。 

关于 On-my-zsh 配置 zsh 提高 shell 逼格的终极选择

1、什么是 shell ?什么是 shell script?

        shell 是用 c语言编写的程序, 是用户使用 Linux 的桥梁。

        shell 既是一种命令语言,也是一种程序设计语言。

        shell 是一种应用程序,提供了系统界面,用户可以通过系统界面访问操作系统的内部程序。

        shell script 是脚本程序,业界所说的 shell 通常是指 shell 脚本,两个不是同的概念。

        “shell 编程”都是指 shell 脚本编程。

对于 git 和 svn 两者的区别?

下面列个表大概写个区别。


GitSvn 
系统 分布式系统集中式版本控制系统
适用 适用于代码管理适用于项目管理文档
安全性高 低 
冲突
在提交的过程中不会被阻止。
有冲突的时候会标记冲突文件。
每次改文件前都要 update ,有时候在修改过程中文件提交不了。
有冲突会阻止提交,解决冲突会比较麻烦
权限 
每个开发者可以有一完整的分支,记录着版本号。
没有权限管理控制,只有账号角色的区分。
权限有管理严格,可以按组或者目录分配。
断网情况 在网络断的情况下,可以看历史记录,可以看日志服务器出现问题无法交互(拉分支、看日志)
分支 
可以有n多个分支,而且互不影响。
每个开发者可以自己建一个分支,然后结束分支,最后合并。
在合并前提交的代码不会影响别人。
本地修改任何文件别人都会看到,提交就会有冲突,然后报红。
拉一个分支就像 copy 一个目录,而且内容都一样。
创一个分支所有人拉目录都会有。

常遇到的问题解决方法 ?

1、假如 我在git上创建了一个项目 然后我和你做这个项目的时候 你创建了分支 然后你提交的代码 不会影响到我这边 是这样子么?

如果用 git 来操作的话,可以且命令或者 工具 SourceTree 。master 是主分支,develop是开发分支。

我要建一个分支 shuaishuaige 。那么我可以用 git  flow 去建(git flow feature start shuaishuaige 开始,git flow feature finish shuaishuaige 结束)。我在这个分支上提交或者修改、删除不会影响到别的分支,在结束后,在合到 develop (正常是其他分支合到 develop 上面,然后 最后 develop 合到 master 上面 )。

2、在 svn 上遇到代码冲突怎么解决。
    
    由于本人用的 mac 命令,在提交代码的时候,如果有冲突会出现提示(大概意思有三个选择 m 表示自己,tc 表示他们的代码 , 还有一个表示 合并代码)。

    如果用 win 的 工具的话,可以右击 如下图。这个英文自己百度。

帅帅哥常用的 git 命令:

    1、更新拉取远程分支
            git fetch origin                

    2、切换到 shuaishuaige 这个分支上
            git checkout shuaishuaige        

    3、检查本地分支
            git branch                         

    4、检查远程分支
            git branch -r                  

    5、 列出本地分支和远程分支
            git branch -a

    6、本地添加为 shuaishuaige 的分支
            git branch shuaishuaige            

    7、把本地 shuaishuaige 这个分支删除
            git branch -d shuaishuaige            

    8、把本地分支 shuaishuaige push 到远程上去
            git push origin shuaishuaige    

    9、 删除远程 shuaishuaige 的分支
            git push origin :shuaishuaige   
            或者   
            git push origin --delete shuaishuaige

    10、创建一个新分支并且停留在这个分支上
            git checkout -b    shuaishuaige    

    11、返回上一个分支
            git checkout -                    

    12、显示远程仓库的信息
            git remove -v                    

    13、提交时显示的名字
            git config user.name "shuaishuaige"            

    14、提交时显示邮箱地址
            git config user.email "email address"        

    15、添加当前目录到文件暂存区
            git add .                         
  
    16、显示有变更的文件
            git status                         

    17、显示工作区和暂存区的差别
            git diff                        

    18、显示当前分支的最近几次提交
            git reflog                        

    19、显示所有提交过代码的用户,按提交次数排序
            git shortlog -sn               

    20、显示近 5 次的提交
            git log -5 --pretty --oneline     


帅帅哥常用的 git  flow 命令:

1、直接签出新分支,我们可以在上面开发
        git-flow

2、初始化
        git flow init                                   

3、创建一个 shuaishuiage 的分支名(并且切自动切换到当前分支)
        git flow feature start shuaishuaige   
     
               1、完成新功能和必要的修复。

               2、已经彻底被测试过了。

4、结束一个 shuaishuiage 的分支名(并且自动删除)
        git flow feature finish shuaishuaige     
    
                1、 一个在更广泛的“开发”背景下全面测试。

                2、稍后和所有积攒在 “develop"分支中其它功能一起进行发放。

                3、之后git-flow 也会进行清理操作。删除当下已经完成的分支,并切到”develop" 分支 。

5、develop分支新功能和测试完成,生成新版号
        git flow release start 1.1.5                  

6、完成 1.1.5 版本的开发
        git flow release finish 1.1.5     
        
                 1、首先,git-flow 会拉取远程仓库,确保目前是最新版本。

                 2、release 的内容会被合并到 master 和 develop 这两个公支中去,这样不仅产品代码为最新,而且新功能分支也基于最新。

                 3、为了便于识别和做历史参考,release 提交会被标记这个 release 的名字(本例中用的是 1.1.5)。

                 4、清理操作,版本分支会被删除,并且回到 develop 分支。

7、产品代码修复
        git flow hotfix start missing-link          

                 1、很金时候,仅在几小时或者几天,release 版本全面测试会发生小错误。

                 2、git-flow 提供一个特定的 “hotfix” 工作流程(不管使用 “功能”分支还是 “release" 都是不恰当的)。

                 3、release 分支是基于 “develop"分支的。而 hotfix 是基于 ”master“ 分支的。

8、代码修复完提交
        git flow hotfix finish missing-link         

                 1、类似于发布 release 的版本,代码合到 master 的同时也合到了 develop。

                 2、hotfix 程序被标记起来便于参考。

                 3、hotfix 如果被删除,则切换到 develop 分支上。


帅帅哥常用的 svn 命令(mac):

    1、将文件 checkout 到本地目录:
            svn  checkout  目录的路径(比如:http://shuaishuaige/html)

    2、更新代码:
            svn update    

    3、提交文件:
            svn ci -m  '备注修改的内容(比如:我修改了这个标题内容)'   xxx.html

    3、添加新的文件夹后并提交里面的代码 
            svn add recharge                (这里的 recharge 是我的文件夹名称)
            svn ci -m “备注修改的内容“  recharge
    
    4、如果批量修改代码
            svn  st    查看本地哪些代码修改了
            svn  st | grep "M" | cut -c 8->modified.txt          把状态为M的文件筛选出来存入modified.txt文件,可以打开此文件查看是不是正确的。   
            svn  ci -m "bug" --targets modified.txt               只将modified.txt中记录的文件递交到SVN服务器

    5、svn中 update 后 svn 中的文件删除了,在本地删除后,命令行会出现 感叹号 的现象,执行命令:
            svn  delete  /src/shuaishuaige/html/test (路径的文件名)

    6、恢复原始未改变的工作副本文件 (恢复大部份的本地修改)
            svn  revert
            svn  revert  /shuaishuaige/test 
            注意: 该命令不会存取网络,并且会解除冲突的状况。但是它不会恢复

    7、在编辑器中,我用的 vsc ,文件名后面会显示字母,意思如下:
            A  已添加
            D  已删除
            U  已更新
            C  合并冲突
            G  合并成功
            E  已存在

    8、黄色感叹号(有冲突):

        这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别人的修改。要解决冲突,如果你确认你的修改是无效的,则用TSVN还原你的修改就行了;如果认为你的修改是正确的,别人的提交是无效的,那么用TSVN先标记为“解决冲突”,然后就可以提交了;如果你认为你的修改和别人的修改都有一部分是有效的,那么你就把别人的修改手动合并到你的修改中,然后使用TSVN标注为“解决冲突”,然后就可以提交了。进入文件夹,寻找有黄色感叹号的文件,这些文件就是发生冲突的地方,根据实际情况处理冲突

    9、米字号(有本地修改代码):
        这是说明你有未提交的本地代码。

    10、问号(新加入的资源):
        这说明该文件是项目中新增文件资源,新增资源可以是文件、图片、代码等。

    11、红色感叹号(本地代码与库没有保持一致):
        这说明本地代码跟库上没有保持一致,如果用户想修复,可以将带红色感叹号图标文件删除,直接update即可。

    12、灰色向右箭头(本地修改过)
        本地代码没有及时上库。

    13、蓝色向左箭头(SVN上修改过)
        记得更新代码后修改,提交前跟svn对比习惯。

    14、灰色向右且中间有个加号的箭头(本地比SVN上多出的文件)
        修改完记得跟svn保持一致

    15、蓝色向左且中间有个加号的箭头(SVN上比本地多出的文件)
        删除该文件后,再次更新,将svn上文件全部更新下来。

    16、灰色向右且中间有个减号的箭头(本地删除了,而SVN上未删除的文件)
        也就是说你删除确认后,一定要记得上库,跟svn保持一致

    17、蓝色向左且中间有个减号的箭头(SVN上删除了,而本地未删除的文件)
        比对svn库上代码,确定需要删除后,更新svn(删除无用代码)。

    18、红色双向箭头(SVN上修改过,本地也修改过的文件 )
        这个表示本地和svn上都修改过,最好就是把本地修改合并到svn,修改代码前最后先更新。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值