1.svn和git的区别
1.svn是集群式管理,就是版本控制都在服务器上
缺点:万一服务器挂了,name公司的多人协同开发和版本控制受阻
2.git 是分布式管理,服务器和客户端都有版本控制的能力,都能进行代码的提交合并
2.git和svn的表现形式
1.svn 会在每个文件夹下创建一个.svn的隐藏文件
项目体积相对git管理的项目管理要大
冲突相对git管理的项目要多
2.git 只会在根目录下创建一个.git隐藏文件夹
项目体积相对svn管理的项目药效
冲突相对svn管理的项目要少
3.git和svn的各个用途
svn 公司内部用,一般不会公布出去
git 开源项目用,单人开发常用
4.svn和git的操作流程
svn 服务器---> 客户端 --->服务器
git 服务器--->本地---> 客户端--->本地--->服务器
Git的指令操作
1.创建本地项目文件test
/user/haha/Desktop/test
2.在本地项目文件目录下,创建本地仓库(版本控制)
cd /user/haha/Desktop/test
git init
3.在项目文件里创建hello.py文件,用于版本控制
4.修改文件之后,查看修改之后和之前的对比
git diff
* 绿色表示新增,红色表示删除 / 修改
5.把新建的hello.py文件添加到本地仓库(版本控制)里面
git add . 或者 git add 文件名
6.查看当前版本控制里面的文件状态
git status
* 红色表示新建文件或者新修改的文件,都在‘工作区’
* 绿色表示文件在‘暂存区’
提示 : 终端命令git add .
只是把文件从工作区
添加到暂存区
,此时还没有到本地仓库,要到本地仓库需要 git commit .
7.在commit
之前命令之前,需要设置个人信息,可以添加--global
参数,给所有的git仓库添加一个统一的配置项。这个配置项保存在~/.gitconfig
文件中
配置用户名 git config --global user.anme"张三"
配置邮箱 git config --global user.email "[email protected]"
也可以给这一个Git仓指定自己的用户名和邮箱。会保存在当前仓库.git/config文件里
配置用户名 git config user.name "zhangsan"
配置邮箱 git config user.emial "[email protected]"
8.把文件从暂存区
提交到本地仓库
git commit -m '描述操作'
9.把文件从暂存区
提交到本地仓库
之后,再查看版本控制里面的文件状态
git status
10.把先由工作区
添加到暂存区
,再提交到本地仓库
合并成一句命令
git commit -am ' 描述操作'
11.查看所有的详细的历史版本
git reflog(可以看到被删除和退回的提交记录)
或者
git log (不能看到已经删除和回退的提交记录)
12.回到某个置顶版本
git reset --hard 版本号前6位
git 远程服务器
1.复制码云里的项目下载地址,使用git clone 命令将码云里的项目下载到本地。这个过程中,需要输入码云的注册用户名和码云用户密码。注意:只有被添加到项目里的成员和管理者才能下载代码
2.代码的提交:当用户在本地操作完数据以后,需要调用git push将修改推送至远端服务器
1.从远端服务器获取最新的代码
git pull
2.修改本地文件
vim hello.py
3.将修改提交到本地仓库
git add hello.py
git commit -m '修改了hello.py
4.将本地仓库修改推送至远端服务器
git push
Git代码冲突
1.容易出现的冲突操作方式
1.多个人同时操作了同一个文件
2.一个人一直写代码但是不提交
3.修改代码之前,不更新代码
4.提交之前,不更新最新代码
5.擅自修改同时代码
2.避免冲突
1.养成良好的代码习惯,先pull再修改,修改完立即commit和push
2.一定要确保自己正在修改的文件是最新版本
3.分模块开发,各自开发各自的模块
4.如果要修改公共文件,一定要先确认有没有人正在修改
5.下班前一定要提交代码,上班第一件事拉去最新的代码
6.不要擅自修改同时的代码
Git 分支
分支的作用
假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还
没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨
大风险。 现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上
正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这
样,既安全,又不影响别人工作。
分支的本质
Git分支的其实本质仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master
。 在多次提交操作之后,
你其实已经有一个指向最后那个提交对象的master
分
支。 它会在每次的提交操作中自动向前移动。
.git/HEAD
这个特殊指针来表示当前到底在哪个分支。
1.创建本地分支
查看所有分支
git branch
新建一个分支
git branch name
切换到置顶分支
git checkout 分支名
2.合并分支
首先切换到主分支
git checkout master
.get/HEAD指向当前所处分支
cat .git/HEAD
将develop分支里的内容合并到master主分支
git merge develoop
3.查看本地分支远程分支的映射关系
git branch -vv
4.创建远程分支拉去到本地
git pull origin develop:develop #将远端上develop分支拉去到本地的develop分支
6.删除远端分支
git push origin --delete develop #将远端分支develop删除
7.分支的其他的相关指令
git fetch 只是拿到远端的分支的最新commit_id,并不会自动合并,需要手动合并
git fetch origin test #将远端test的最新commit_id获取到本地
git merge origin/test test # 将远端的test的修改内容合并到本地的test分支
git rebase 用法和git merge类似
git rebase # 如果在合并时有冲突,需要手动解决冲突
git add . # 标记为已解决所有冲突
git rebase --abort # 终止合并
git rebase --continue # 解决完冲突以后,不在git commit,
而是使用git rebase --continue 提交修改冲突后的数据
SSH连接
码云生成部署SSH Key:[http://git.mydoc.io/?t=154712](http://git.mydoc.io/?t=154712)
gitHub生成SSH Key:[https://help.github.com/articles/connecting-to-github-with-ssh](https://help.github.com/articles/connecting-to-github-with-ssh)/