版本控制总结

版本控制工具

GIT和SVN
GIT是是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

GIT特点(优点)

1、分布式开发时,可以git clone克隆一个本地版本,然后在本地进行操作提交,本地可以完成一个完整的版本控制。在发布的时候,使用git push来推送到远程即可。
2、git分支的本质是一个指向提交快照的指针,速度快、灵活,分支之间可以任意切换。都可以在本地进行操作可以不同步到远程。
3、冲突解决,多人开发很容易就会出现冲突,可以先pull远程到本地,然后在本地合并一下分支,解决好冲突,在push到远程即可。
4、离线工作,如果git服务器出现问题,也可以在本地进行切换分支的操作,等联网后再提交、合并等操作。

SVN特点(优点)

1、集中式管理,管理方式在服务端配置好,客户端只需要同步提交即可,使用方便,操作简单,很容易就可以上手。
2、在服务端统一控制好访问权限,利用代码的安全管理。
3、所有的代码已服务端为准,代码一致性高。

GIT缺点

1git有严格的权限控制,一般是通过系统设置文件的读写权限来做权限控制。
2、工作目录只能是整个目录

SVN缺点

1、所有操作都需要通过服务端进行同步,这会导致服务器性能要求比较高。如果服务器宕机了就无法提交代码了。
2、分支管理不灵活,svn分支是一个完整的目录,且这个目录拥有完整的实际文件,这些操作都是在服务端进行同步的,不是本地化操作,如果要删除分之,也是需要将远程的分支进行删除,这会导致大家都得同步。
3、需要联网。如果无法连接到SVN服务器,就无法提交自己的代码,更别说还原、对比等操作了。如果在内网还好,网速比较稳定,同步相对比较快,如果是通过外网同步,有可能就需要同步很久。

总结

如果对访问控制、权限分配和代码安全性等要求比较高的,建议使用svn。
如果是分布式,多人开发,版本迭代比较快的项目,建议使用git。

GIT使用方法

在你开始使用 Git 前,需要将它安装在你的计算机上。

在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载,网址为 http://git-scm.com/。另外,还有一个名为 Git
for Windows的项目,和 Git 是分别独立的项目。你可以在Git for Window网站下载,网址为链接

初次运行 Git 前的配置

Git 自带一个 git
config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:

Git提供了3种级别的配置,分别是:系统级别、全局配置、仓库级别
1, /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git
config 时,它会从此文件读写配置变量。

2,~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。

3,当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。
在 Windows 系统中,Git 会查找 $HOME 目录下(一般情况下是 C:\Users$USER)的 .gitconfig 文件。 Git 同样也会寻找 /etc/gitconfig 文件,但只限于 MSys 的根目录下,即安装 Git 时所选的目标位置。

用户信息配置

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:


$ git config
--global user.name "John Doe"

$ git config
--global user.email johndoe@example.com

文本编辑器

既然用户信息已经设置完毕,你可以配置默认文本编辑器了,当 Git 需要你输入信息时会调用它。 如果未配置,Git 会使用操作系统默认的文本编辑器,通常是 Vim。 如果你想使用不同的文本编辑器,例如 Emacs,可以这样做:



$ git config--global core.editor emacs

检查配置信息

如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置。


$ git config--list

user.name=JohnDoe

user.email=johndoe@example.com

color.status=auto

color.branch=auto

color.interactive=auto

color.diff=auto

...

你可能会看到重复的变量名,因为 Git 会从不同的文件中读取同一个配置(例如:/etc/gitconfig 与 ~/.gitconfig)。 这种情况下,Git 会使用它找到的每一个变量的最后一个配置。

你可以通过输入 git config key: 来检查 Git 的某一项配置



$ git configuser.name

John Doe

获取帮助

若你使用Git时需要获取帮助

$ git help <command>
$ git <command> -- help

例如,获得config命令手册

$ git help config

Git常用命名

配置工具

为所有本地仓库配置用户信息

git config --list
//查看所有配置
git config --global user.name "[name]"
//设置要附加到提交事务的名字
git config -- global user.email "[email address]"
//设置要附加到提交事务的邮箱地址
git config -- global color.ui auto
//启用命令行输出的帮助信息着色方案
git config -- global core.editor "notepad"
//配置默认的编辑器

创建仓库

初始化一个新存储库或克隆一个现有的存储库

git init [repository-name]
//以指定的名称创建一个新的本地仓库
git clone [url]
//克隆一个远程仓库,仓库的整个版本历史都会被克隆下来

操作仓库

预览编辑并创建提交事务

git status
//查看当前工作目录的状态,列出所有新创建的或者修改之后的文件
git diff
//显示修改之后,但未被保存到暂存区的文件与修改之前的差异
git add [file]
//为版本控制准备文件快照
git diff -- staged
//显示暂存文件和最后一个版本之间的差异
git reset [file]
//拆下(unstates)文件,但保留其内容
git commit -m "[descriptive message]"
//将文件快照永久的记录在版本历史记录中
git commit -a -m/--message "[descriptive message]"
//跳过暂存区,直接提交,但被提交的内容必须是已被git跟踪过的内容

分支



命名一系列提交,合并完成的效果
git branch
//列出当前存储库中的所有本地分支
git branch[branch-name]
//创建一个新分支
git checkout[branch-name]
//切换到指定分支,并更新工作目录
git merge[branch]
//将指定分支的历史记录合并到当前分支中
git branch -d[branch-name]
//删除指定分支

删除或重命名


git rm [file]
//从工作目录中删除文件并暂存删除操作。
git rm--cached [file]
//从版本控制中删除文件,但是保留本地(工作目录中)文件。
git mvold-file-name new-file-name
//更改文件名并准备提交

禁止跟踪

忽略临时文件和路径


* .log
build/
temp-*
//在.gitignore文件中指定要不跟踪的文件和路径。
git ls-files--other --ignored --exclude-standard
//列出此项目中所有被忽略的文件

查看历史版本

浏览和检查项目文件的发展


git log
//列出当前分支的所有版本历史
 git  log --follow  file-name
//列出文件的版本历史记录,包括重命名
git diff[first-branch]...[second-branch]
//显示两个分支之间的内容差异
git show[commit]
//查看某次提交时所做的操作,显示提交的元数据(作者,邮箱,等)和对文件所做的改变。

重做提交

清除错误和工艺替换历史

 git reset[commit]
//在[commit]之后撤消所有提交,在本地保留更改

git reset--hard [commit]
丢弃所有的历史纪录和更改,回退到指定的提交

远程仓库



注册存储库书签并交换版本历史记录
git fetch[bookmark]
//将数据拉取到你的本地仓库,但不会自动合并或修改你当前的工作。 你需要手动将其合并入你的工作。
git merge[bookmark]/[branch]
//将书签的分支合并到当前本地分支
git push [remote-name][branch-name]
//将指定分支推送到远程服务器时。例如将 master 分支推送到 origin 服务器。
git pull
//从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值