Git
协同开发(版本控制器)
一、SVN
- 
SVN是集中式服务器,整个公司用的是同一台服务器
 - 
服务器端创建仓库
 - 
SVN客户端操作
- 关联服务器端:检出关联
 - 提交:SVN commit
 - 更新:SVN update
 - 冲突:服务器只能基于一个版本进行升级(手动解决)
 
先更新,后提交
 
二、Git
Git是分布式服务器,集中式 vs 分布式
自报家门:你的名字和Email地址
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
1.创建仓库(创建版本库):
git init
2.添加到版本库:
git add filename
git commit -m '注释'
3.版本回退管理:
git status 查看当前版本库状态
git diff 查看具体修改内容
git log 查看历史提交版本信息
git log --pretty=oneline 查看历史版本信息简约化
git reset --hard HEAD^  历史版本回退,一个^回退一个版本
git reset --hard 版本号  历史版本回退
git reflog  记录你的每一次命令
4.工作区和暂存区、版本库
工作区:工作目录
暂存区:git add
版本库:git commit
5.管理修改(操作)
Git跟踪并管理的是修改,而非文件。记录、提交操作
6.撤销修改
- 自修改后还没有被放到暂存区:  
git checkout -- fileName - 已经添加到暂存区后: 
git reset HEAD fileNamegit checkout -- fileName - 已经条件到版本库里 参考“ 3.版本回退 ”
 
7.删除文件
- 自然删除,未被添加到版本库:
rm fileName(右键删除) - 已经添加到版本库:
- 彻底删除:
rm fileName(右键删除)git rm fileNamegit commit -m 'remove' - 恢复原样:
rm fileName(右键删除)git checkout -- fileName 
 - 彻底删除:
 
8.分支管理
- 创建并切换分支: 
git checkout -b ‘分支名称’ - 切换分支: 
git checkout ‘分支名称’ - 查看分支: 
git branch - 合并分支: 
git merge ‘分支名称’在主分支下合并 - 删除分支: 
git branch -d ‘分支名称’ - 创建分支不切换分支: 
git branch ‘分支名称’ - 切换分支(新版本): 
git switch ‘分支名称’ 
9.分支解决冲突
合并不同分支提交的内容,最后由master主分支add,然后commit提交
10.关联远程仓库:github
- 创建SSH Key:
ssh-keygen -t rsa -C"youremail@example.com";在cmd中运行 - 用github账号创建SSH Key的关联
 - 创建仓库,上传本地仓库代码
git remote add originhttps://github.com/xxx/xxxgit branch -M main(可不用)git push -u origin master(main)如果运行②则master改为main- 修改代码再次上传:
git push 
 - 上传所有文件 
git add . 
11.github的忽略文件
在.gitignore文件中的,不会被上传
12.关联远程仓库:gitee(码云)
- 
创建远程仓库
 - 
克隆远程仓库:
git clone '远端仓库url' - 
添加本地仓库
git add .git commit -m '注释'git push
 - 
向本地拉取
git pull 
13.远程仓库操作容易产生冲突
- 
多人同时上传
解决:
git pull- 保留多人修改的内容
 git add ‘filename’git commit -m '注释'git push
 - 
一个人修改上传,我本地也修改代码,但我不把自己修改了的代码更新到仓库。这时拉取
git pull,会覆盖自己所写代码解决:
- 每次更新前,先把自己的代码提交到本地仓库
 git add '提交的文件名'git commit -m '提交注释'
 
3.git 与 svn 的区别在哪里?
git 和 svn 最大的区别在于 git 是分布式的,而 svn 是集中式的。因此我们不能再离线的情况下使用 svn。如果服务器
出现问题,我们就没有办法使用 svn 来提交我们的代码。
svn 中的分支是整个版本库的复制的一份完整目录,而 git 的分支是指针指向某次提交,因此 git 的分支创建更加开销更小
并且分支上的变化不会影响到其他人。svn 的分支变化会影响到所有的人。
svn 的指令相对于 git 来说要简单一些,比 git 更容易上手。
详细资料可以参考:
《常见工作流比较》
《对比 Git 与 SVN,这篇讲的很易懂》
《GIT 与 SVN 世纪大战》
《Git 学习小记之分支原理》

                
            
        
浙公网安备 33010602011771号