git与svn的区别:
分布式:
git,除了远程仓库外,每个电脑都有本地仓库备份,和远端服务器没有连接仍可工作。建立连接后,将改动推送到服务器中即可。
数据一致性(推送到远端,最终保持一致)、可用性(断开网络也可用)、分区容错性(建立连接后其他客户端也可拉到代码)。
集中式:
svn,有服务器管理所有源代码,客户要和服务器连接,连接断开就无法工作。
ssh原理
有公钥和私钥(非对称加密方案),公钥发送到远端,私钥在本地,每次提交都是提交内容与私钥进行加密,再提交到远端。远端会拿公钥进行解密。
拉取数据时,远端用公钥加密,本地用私钥解密。
设置远程仓库
裸仓库:git init -bare
非裸仓:git init
git原理:
远端、本地有仓库,有个暂存区index,工作区(代码、资源文件)
git add添加文件到暂存区
git commit xx.c -m “描述” 提交到本地仓库
git push origin master 推送到远端
watch是监视命令结果,可以加时间
git branch显示分支
git checkout feature 切换到feature分支
如何修改远端的内容?
本地地址创建两个(备份),
发生冲突如何处理
git pull将远端代码拉到本地,
head 本地仓库指针
下方是远程仓库
如何修改?
采用本地还是远程,将另外一个删掉,然后git add、git commit
提交修改内容,git push
版本管理标准流程:
master:线上稳定运行的版本
hostfix:
develop:主管从master剪个分支出来,feature是同事从develop分支拉下来开发的分支,开发测试后提交到develop。
主管检查后合并到release中,测试人员从release中测试,合格后release合并到master中,就说明版本打完了可以上线。
git rebase
实现了一个功能,但是分步骤上传了1,2,3,4,现在要将这4个合并成一个步骤
切换分支
git checkout feature
更新代码
git pull oorigin feature
。。。。//代码上传
git rebase -i HEAD~(n) 合并步骤
以上步骤他人可能也会操作,需要:
git rebase develop // 将develop最新代码拉到本地,此时有冲突,要解决冲突
git push origin feature 推送
git checkout develop 切换到主管
git merge feature 主管来合并
如何定位出错的版本?
首先切到develop分支上面,
git bisect 二分查找
git submodule