之前项目一直使用的是svn,换了git之后看了网上一大堆教程,结果还是一脸懵逼的状态。最后还是在大神的带领下终于有所领悟,今天带大家分享一下。
首先说一下svn:svn比较适用小型项目的管理、开发或者一些公司员工之间数据资料的交换。简单、容易上手是其最大的特点,另外还有中文版。正常情况下只要右键更新或者提交就行了。git:对分支管理、模块开发等进行了提升,以便于更好的在多版本、多员工之间进行管理。
svn简单流程 提交:本地文件>提交到服务器;更新:服务器>覆盖或合并到本地;
git简单流程 git会在本地增加一个本地存储空间,相当于临时服务器。提交:本地>本地存储>服务器;更新:服务器>本地和本地存储;
如果仅仅是没有任何分支的情况下,git肯定没有svn好了
以下重点介绍git:
分支是什么?为什么要用到分支?
举个例子:你在改动首页,张三在做支付页,一星期后老板说首页先不发布,而你已经提交了n多遍代码说不定还和张三有重叠,这时怎么办?肯定会想:如果和张三的代码分开多好啊。其实分开这个思想就是开一个分支,如图
其实你和张三分别开发就是在版本2.0上分出来两个分支。
个本地存储是干嘛用的?
既然你和张三开了两个分支,那么这两个分支存储哪呢?在服务器吗?
假如存到服务器,你俩每开一个分支服务器都要自我拷贝一次,另外还要考虑是否重名,是谁创建的,有没有权限,网络状况好不好,是哪个版本等等等等,其实你只需要在当前代码基础上拷贝一份罢了,仅此而已,本地存储自然是当之无愧了。
如何创建一个git项目?
图上很熟悉吧,在github或码云等相关的网站上创建一个新的project,然后右边有下载之类的,然后复制网址(https或者ssh都可以,如果连不上两个都试试)
下载并配置好git(自己度吧),然后进入终端或者cmd进入一个空文件夹下
1、如果github上已有代码,就克隆过来
git clone "url"//远端文件下载到本地
cd XXXX//命令进入刚刚clone的文件夹下
2、如果github上没任何东西(也可以偷懒直接用方法1),初始化一个
git init//初始化
git remote add origin "url"//连接项目
操作完12后执行以下几操作
(git fetch --all//强制覆盖本地,如果下面几步一直报错可以尝试执行这一步)
git reset --hard origin/master//版本指针指向(master)最新
git branch --set-upstream-to=origin/master master//绑定本地分支(master)到远端master,带origin/的都是操作远端
git config core.ignorecase false //对文件大小写敏感(最好设置,不然只是更改文件名大小写是提交不上去的,坑队友没商量)
git pull//更新测试一下
绑定是什么?为什么要绑定?
假如远端有两个分支,你的每次提交是不是都得指定是哪个分支?
如何使用git?
首先提交和更新的基本步骤
git status//查看状态(更改的信息)
git add .//标记所有更改的文件(也可以指定某个文件,把.替换成对应文件的相对路径)
git pull //更新,提交前先更新
git commit -m "修改bug"//提交到本地存储,并加备注(必须)
git push //从本地存储推到远端上
账号密码如何设置?
输入以下命令记住密码(貌似只有https协议能记住密码,各位自测吧。另:网上的各种麻烦教程原理等均属坑爹行为,这里才是正道,嫑被拐骗了):
1.先保存账号信息,执行以下三个命令:
git config --global user.name 你的账号名
git config --global user.email 你的邮箱
git config --global credential.helper store
然后git pull输入账号密码后再pull一下你就会发现不用再输入账号密码啦
我大studio怎么可能不支持git
点击vcs>EnableVersion Control Integration,选择git
这时底部栏会多出两个标签,version control查看修改文件,右下角的develop或master是当前的分支,点击即可操作其他分支(切换、合并、删除等),如图
git的其他操作
强制覆盖并删除本地文件(谨慎操作!!!谨慎操作!!!谨慎操作!!!曾经伤心过):
git fetch --all //从远端
git reset --hard origin/master //版本指针指向最新的(master)版本
git pull //测试一下
添加标签:
git tag -a "版本V1.00" -m "增加了好多坑"
git tag //查看所有的tag
git show "版本V1.00" //查看指定tag的详细信息
git push origin --tags //提交所有的tag
git tag -d "xxxx" //删除本地tag xxxx
git push origin (--delete) tag V1.1//删除远端tag(不会删除本地tag,要想彻底删除,把本地的也干掉)
其他操作
git config core.ignorecase false //对文件大小写敏感
git branch //查看本地分支
git branch -a //查看远程分支
git merge "xxx" //合并xxx到当前分支
git checkout master //转到master主分支
git branch wTest //以当前分支创建子分支wTest
git branch -d/D "wTest" //删除本地分支wTest,大写D表示忽略分支未合并强制删除
git push origin :"develop" //删除远端develop,谨慎操作!!!
git rm --cached (-r) "xxxx" //保留本地文件,将git远端删除
git rm --f "xxxx" //删除本地和远端的文件
远端分支只有一个吗?
远端分支多少看架构思想了,目前比较流行的就是初创建项目看到的那2个,截图中也有orgin/master和orgin/develop
develop代表当前正在开发的内容,当开发的小功能完成之后从将本地develop提交到远端的develop上,当测试通过准备发版时,将develop合并master上,并由master发版
master和线上发版有关,当线上的app有bug时从master开一个分支,修复完后分别合并到master和develop
总结就是:develop是开发版必须包含master内容,master是正式版必须和线上的app同步
.gitignore的配置见另一篇博客
总是忘了pull?总是和别人冲突?
只需要个插件,妈妈再也不用担心忘记pull,你的git从此将不再有冲突记录:https://blog.youkuaiyun.com/weimingjue/article/details/109149530
转载请注明出处:王能的博客https://blog.youkuaiyun.com/weimingjue/article/details/72644459