热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

git(分布式)和svn(集中式)都是版本控制器。个人观点而言,这两都对比之下,我更喜欢git操
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,修改代码前最后先更新。 

推荐阅读
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 本文详细探讨了 Java 中 com.codahale.metrics.servlets.AdminServlet.() 方法的实现与应用,并提供了多个实际项目中的代码示例,帮助开发者更好地理解和使用这一方法。 ... [详细]
  • GitHub基础指南:项目代码的部署与管理
    GitHub是一个广泛使用的开源代码托管平台,支持版本控制与协作开发。本文将指导开发者如何在GitHub上高效地管理和分享项目代码,包括项目的创建、代码的上传与下载等基本操作。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 优雅地记录API调用时长
    本文旨在探讨如何高效且优雅地记录API接口的调用时长,通过实际案例和代码示例,帮助开发者理解并实施这一技术,提高系统的可观测性和调试效率。 ... [详细]
  • 深入解析 RuntimeClass 及多容器运行时应用
    本文旨在探讨RuntimeClass的起源、功能及其在多容器运行时环境中的实际应用。通过详细的案例分析,帮助读者理解如何在Kubernetes集群中高效管理不同类型的容器运行时。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 使用 `git stash` 可以将当前未提交的修改保存到一个临时存储区,以便在后续恢复工作目录时使用。例如,在处理中间状态时,可以通过 `git stash` 命令将当前的所有未提交更改推送到一个新的储藏中,从而保持工作目录的整洁。此外,本文还将详细介绍如何解决 `git stash pop` 时可能出现的冲突问题,帮助用户高效地管理代码变更。 ... [详细]
author-avatar
美娟婉燕6386
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有