Git 和 SVN

协同开发(版本控制器)

一、SVN

  1. SVN是集中式服务器,整个公司用的是同一台服务器

  2. 服务器端创建仓库

  3. SVN客户端操作

    1. 关联服务器端:检出关联
    2. 提交:SVN commit
    3. 更新:SVN update
    4. 冲突:服务器只能基于一个版本进行升级(手动解决)

    先更新,后提交

二、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.撤销修改

  1. 自修改后还没有被放到暂存区: git checkout -- fileName
  2. 已经添加到暂存区后: git reset HEAD fileName git checkout -- fileName
  3. 已经条件到版本库里 参考“ 3.版本回退 ”

7.删除文件

  1. 自然删除,未被添加到版本库:rm fileName(右键删除)
  2. 已经添加到版本库:
    1. 彻底删除:rm fileName(右键删除) git rm fileName git commit -m 'remove'
    2. 恢复原样:rm fileName(右键删除) git checkout -- fileName

8.分支管理

  1. 创建并切换分支: git checkout -b ‘分支名称’
  2. 切换分支: git checkout ‘分支名称’
  3. 查看分支: git branch
  4. 合并分支: git merge ‘分支名称’ 在主分支下合并
  5. 删除分支: git branch -d ‘分支名称’
  6. 创建分支不切换分支: git branch ‘分支名称’
  7. 切换分支(新版本): git switch ‘分支名称’

9.分支解决冲突

合并不同分支提交的内容,最后由master主分支add,然后commit提交

10.关联远程仓库:github

  1. 创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com";在cmd中运行
  2. 用github账号创建SSH Key的关联
  3. 创建仓库,上传本地仓库代码
    1. git remote add origin https://github.com/xxx/xxx
    2. git branch -M main(可不用)
    3. git push -u origin master(main)如果运行②则master改为main
    4. 修改代码再次上传:git push
  4. 上传所有文件 git add .

11.github的忽略文件

.gitignore文件中的,不会被上传

12.关联远程仓库:gitee(码云)

  1. 创建远程仓库

  2. 克隆远程仓库:git clone '远端仓库url'

  3. 添加本地仓库

    1. git add .
    2. git commit -m '注释'
    3. git push
  4. 向本地拉取

    git pull

13.远程仓库操作容易产生冲突

  1. 多人同时上传

    解决:

    1. git pull
    2. 保留多人修改的内容
    3. git add ‘filename’
    4. git commit -m '注释'
    5. git push
  2. 一个人修改上传,我本地也修改代码,但我不把自己修改了的代码更新到仓库。这时拉取git pull,会覆盖自己所写代码

    解决:

    1. 每次更新前,先把自己的代码提交到本地仓库
    2. git add '提交的文件名'
    3. git commit -m '提交注释'

3.git 与 svn 的区别在哪里?

git 和 svn 最大的区别在于 git 是分布式的,而 svn 是集中式的。因此我们不能再离线的情况下使用 svn。如果服务器
出现问题,我们就没有办法使用 svn 来提交我们的代码。

svn 中的分支是整个版本库的复制的一份完整目录,而 git 的分支是指针指向某次提交,因此 git 的分支创建更加开销更小
并且分支上的变化不会影响到其他人。svn 的分支变化会影响到所有的人。

svn 的指令相对于 git 来说要简单一些,比 git 更容易上手。

详细资料可以参考:
《常见工作流比较》
《对比 Git 与 SVN,这篇讲的很易懂》
《GIT 与 SVN 世纪大战》
《Git 学习小记之分支原理》

4.参考资料

廖雪峰老师Git教程

上一篇:HTTP、HTTPS常用的默认端口号


下一篇:细节决定成败 MySQL MHA 部署