本文共 5083 字,大约阅读时间需要 16 分钟。
git(分布式) 和 svn (集中式)都是版本控制器。 个人观点而言,这两都对比之下,我更喜欢 git操作, svn 很多方面我觉得不如 git。为什么这么说呢,举几个例子吧。 github 是为 git 提供一个仓库的拖管服务。可以共享代码。 在 github 上用户所有的文字功能都可以用 github flavored markdown (CFM)语法。而且现在很多服务都兼容 markdown。 将一个任务或者问题分给一个 Issue 进行追踪和管理功能。 任何一个人随时都可以对文章进行编写和保存,很多人可以共同完成一个文章。 仓库推送更改或者功能添加后。可以通过 pull request 功能向别人仓库提出请求要求合并。 关于 On-my-zsh 配置 zsh 提高 shell 逼格的终极选择 1、什么是 shell ?什么是 shell script? shell 是用 c语言编写的程序, 是用户使用 Linux 的桥梁。 shell 既是一种命令语言,也是一种程序设计语言。 shell 是一种应用程序,提供了系统界面,用户可以通过系统界面访问操作系统的内部程序。 shell script 是脚本程序,业界所说的 shell 通常是指 shell 脚本,两个不是同的概念。 “shell 编程”都是指 shell 脚本编程。 | Git | Svn |
系统 | 分布式系统 | 集中式版本控制系统 |
适用 | 适用于代码管理 | 适用于项目管理文档 |
安全性 | 高 | 低 |
冲突 | | 每次改文件前都要 update ,有时候在修改过程中文件提交不了。 |
权限 | | 权限有管理严格,可以按组或者目录分配。 |
断网情况 | 在网络断的情况下,可以看历史记录,可以看日志 | 服务器出现问题无法交互(拉分支、看日志) |
分支 | 每个开发者可以自己建一个分支,然后结束分支,最后合并。 | 本地修改任何文件别人都会看到,提交就会有冲突,然后报红。 拉一个分支就像 copy 一个目录,而且内容都一样。 |
1、假如 我在git上创建了一个项目 然后我和你做这个项目的时候 你创建了分支 然后你提交的代码 不会影响到我这边 是这样子么? 如果用 git 来操作的话,可以且命令或者 工具 SourceTree 。master 是主分支,develop是开发分支。 我要建一个分支 shuaishuaige 。那么我可以用 git flow 去建(git flow feature start shuaishuaige 开始,git flow feature finish shuaishuaige 结束)。我在这个分支上提交或者修改、删除不会影响到别的分支,在结束后,在合到 develop (正常是其他分支合到 develop 上面,然后 最后 develop 合到 master 上面 )。 由于本人用的 mac 命令,在提交代码的时候,如果有冲突会出现提示(大概意思有三个选择 m 表示自己,tc 表示他们的代码 , 还有一个表示 合并代码)。 如果用 win 的 工具的话,可以右击 如下图。这个英文自己百度。
git checkout shuaishuaige 7、把本地 shuaishuaige 这个分支删除 git branch -d shuaishuaige 8、把本地分支 shuaishuaige push 到远程上去 git push origin shuaishuaige git push origin :shuaishuaige git push origin --delete shuaishuaige git checkout -b shuaishuaige git config user.name "shuaishuaige" git config user.email "email address" git log -5 --pretty --oneline 3、创建一个 shuaishuiage 的分支名(并且切自动切换到当前分支) git flow feature start shuaishuaige 4、结束一个 shuaishuiage 的分支名(并且自动删除) git flow feature finish shuaishuaige 2、稍后和所有积攒在 “develop"分支中其它功能一起进行发放。 3、之后git-flow 也会进行清理操作。删除当下已经完成的分支,并切到”develop" 分支 。 5、develop分支新功能和测试完成,生成新版号 git flow release start 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 分支。 git flow hotfix start missing-link 1、很金时候,仅在几小时或者几天,release 版本全面测试会发生小错误。 2、git-flow 提供一个特定的 “hotfix” 工作流程(不管使用 “功能”分支还是 “release" 都是不恰当的)。 3、release 分支是基于 “develop"分支的。而 hotfix 是基于 ”master“ 分支的。 git flow hotfix finish missing-link 1、类似于发布 release 的版本,代码合到 master 的同时也合到了 develop。 3、hotfix 如果被删除,则切换到 develop 分支上。 svn checkout 目录的路径(比如:http://shuaishuaige/html) svn ci -m '备注修改的内容(比如:我修改了这个标题内容)' xxx.html svn add recharge (这里的 recharge 是我的文件夹名称) svn ci -m “备注修改的内容“ recharge 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 /shuaishuaige/test 注意: 该命令不会存取网络,并且会解除冲突的状况。但是它不会恢复 7、在编辑器中,我用的 vsc ,文件名后面会显示字母,意思如下: 这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别人的修改。要解决冲突,如果你确认你的修改是无效的,则用TSVN还原你的修改就行了;如果认为你的修改是正确的,别人的提交是无效的,那么用TSVN先标记为“解决冲突”,然后就可以提交了;如果你认为你的修改和别人的修改都有一部分是有效的,那么你就把别人的修改手动合并到你的修改中,然后使用TSVN标注为“解决冲突”,然后就可以提交了。进入文件夹,寻找有黄色感叹号的文件,这些文件就是发生冲突的地方,根据实际情况处理冲突 这说明该文件是项目中新增文件资源,新增资源可以是文件、图片、代码等。 这说明本地代码跟库上没有保持一致,如果用户想修复,可以将带红色感叹号图标文件删除,直接update即可。 14、灰色向右且中间有个加号的箭头(本地比SVN上多出的文件) 15、蓝色向左且中间有个加号的箭头(SVN上比本地多出的文件) 删除该文件后,再次更新,将svn上文件全部更新下来。 16、灰色向右且中间有个减号的箭头(本地删除了,而SVN上未删除的文件) 也就是说你删除确认后,一定要记得上库,跟svn保持一致 17、蓝色向左且中间有个减号的箭头(SVN上删除了,而本地未删除的文件) 比对svn库上代码,确定需要删除后,更新svn(删除无用代码)。 18、红色双向箭头(SVN上修改过,本地也修改过的文件 ) 这个表示本地和svn上都修改过,最好就是把本地修改合并到svn,修改代码前最后先更新。