从VSS到SVN再到Git 记Git的基本操作

Source code control 一直是软件开发过程中重要的环节,从最初的纯文件备份,到使用工具进行管理。Source code control 工具的作用也不仅仅只是单纯的对同一个版本进行管理了。从目前主流的source code control工具当中不难发现里面的Branch, tag等功能的应用场景越来越多,特别是现在多数企业使用的敏捷编程,结合branch和tag等功能真的能够很好的做到多版本开发,快速迭代。

思考: 没有source code control我们如何快速的基于一份代码同时进行多个功能的并行开发。

回过头来说下本人在行业当中所用到的几款source code control工具。

VSS

VSS(Visual Source Salf),是一款微软提供的代码管理工具,作为Visual Studio的一员,在早期的开发过程当中确实能够确保代码不被开发人员错误的修改,也解决了异地开发协作的代码共享管理的难点。但是依旧有一些不足,比如:

  • 文件基本以独占的形势进行锁定。如果A在修改的时候B没有办法进行修改。
  • VSS只支持Windows版本,支持的开发工具仅支持微软系。
  • 基于文件存储,服务器必须共享文件夹。安全性值得考虑。以前一般用于内网开发环境。
  • 收费

SVN

SVN(Subversion),一个开源的source code control system。除开最基本的如VSS提供的代码管理功能外,最大的亮点是提供了分支,且提交内容的级别基于代码行了。也就是说,不用再有独占文件开发的问题了。比如,一个实现接口的代码文件可以由多个开发人员同时修改。谁先做完谁可以先进行提交,不会等到必须所有的人做完后再进行合并。对于不能使用VSS的工程师来说,SVN的出现完全是一个福音,直接从CVS跳到了这么强大的工具上。
总结一下,SVN的优劣如下:

  • 优势:

    • 代码一致性高。
    • 支持提交事物性操作。
    • Diff 功能。
    • Branch,Tag的引用,方便版本管理。
    • 轻松上手。
  • 劣势
    • 必须是联网状态下才可以进行一些数据的读取。
    • 不是分布式的代码库。
    • SVN服务器崩溃的灾难是巨大的。

Git

随着开源运动的流行(Liunx开发人员的功劳),Git也就这么流行起来的。说是在随着开源运动的流行而流行起Git的呢?这归功于Git的分布式这一特性。试想,如果全世界所有的Liunx爱好者都在几台机器上进行开发和提交,这酸爽不敢想象。抑或是主服务器崩溃了,那么其他的开发人员也只有泪奔。
Git的牛逼之处在于以下:

  • 每一次Clone就是从服务器上pull到了所有的内容,包括版本信息。
  • 在本地可以根据不同的需要,本地新建自己的分支。
  • 分支之间的任意切换。
  • 单机上就可以进行分支合并。
  • 牛人+插件加持。 Git flow, 按Vincent Driessen 分支模型提供的一个插件.

[email protected]

A successful Git branching model

如何使用Git

  1. 安装
  2. $ Brew install git
  3. 创建仓库
  4. $ git init
  5. 文件操作

    有了仓库后就可以对文件进行 add , commit, push 和pull等操作了。

Tables Are
git add 添加至暂存区
git add–interactive 交互式添加
git apply 应用补丁
git am 应用邮件格式补丁
git annotate同义词,等同于 git blame
git archive 文件归档打包
git bisect 二分查找
git blame 文件逐行追溯
git branch 分支管理
git cat-file 版本库对象研究工具
git checkout 检出到工作区、切换或创建分支
git cherry-pick 提交拣选
git citool 图形化提交,相当于 git gui 命令
git clean 清除工作区未跟踪文件
git clone 克隆版本库
git commit 提交
git config 查询和修改配置
git describe 通过里程碑直观地显示提交ID
git diff 差异比较
git difftool 调用图形化差异比较工具
git fetch 获取远程版本库的提交
git format-patch 创建邮件格式的补丁文件。参见 git am 命令
git grep 文件内容搜索定位工具
git gui 基于Tcl/Tk的图形化工具,侧重提交等操作
git help 帮助
git init 版本库初始化
git init-db* 同义词,等同于 git init
git log 显示提交日志
git merge 分支合并
git mergetool 图形化冲突解决
git mv 重命名
git pull 拉回远程版本库的提交
git push 推送至远程版本库
git rebase 分支变基
git rebase–interactive 交互式分支变基
git reflog 分支等引用变更记录管理
git remote 远程版本库管理
git repo-config* 同义词,等同于 git config
git reset 重置改变分支“游标”指向
git rev-parse 将各种引用表示法转换为哈希值等
git revert 反转提交
git rm 删除文件
git show 显示各种类型的对象
git stage* 同义词,等同于 git add
git stash 保存和恢复进度
git status 显示工作区文件状态
git tag 里程碑管理

.
.

Best practice

建议使用github进行上手实验。使用邮箱注册一次Git hub后即可在Github上创建自己的Repository.

2.png

创建完成后,我们会得到一个Repository的地址。有了这个地址我们就可以进行Git的练习了。

3.png

  • 使用 git clone 将远程仓库clone到本地。

     git clone

5.png

  • 添加一些文件
  echo "Hello Scott" -> "Hello"   //写了一个文件到Hello
  git add Hello // 将Hello文件添加到暂存区。(Index)
  git commit -m "this is my first file" // 提交到本地仓库
  git push  //推送本地仓库到远程仓库

6.png

以上,文件就被推送到了远程仓库。其他工程师如果执行Pull操作的话即可把变动的文件拉到本地。

7.png

  • 如果有其他工程师修改了文件,需要远程获取下。

     git pull  //拉取远端文件
     git log //可以查看变更历史

A5B85BFD-764E-468F-81C4-0B727BA70428.png

  • 冲突的解决
    冲突往往是因为版本不一致而产生。如工程师A修改了Hello文件并提交到远端仓库,而B在本地修改了Hello,也想提交。由于A和B的Hello文件并不一致,所以冲突产生了。

4EB9EB75-2FF9-4363-AD78-9E13D1415EA8.png

只需要git pull一次即可。 (注:git pull 会自动merge,但是通常情况下自动merge效果不会太好。比如A和B 都在修改function A (){} )
冲突长这模样。

10.png

一般手动解决冲突后,重新添加,提交,push即可。

11.png

如上描述,手动合并冲突比较麻烦。建议使用工具进行git 的操作,现在一般的工具都提供了分支管理,合并等功能。
推荐 SourceTree

分支的管理

在很多时候会遇到同时需要开发多个功能,开发任务将会交给多个工程师进行开发,这个时候在Git上的实践为-->创建多个分支。 N个工程师从Master或Dev分支进行分支创建。

git checkout -b NewFeature   // 分支建好后,会直接切换到该分支。
git push --set-upstream origin NewFeature //与远程分支关联

完成开发后,需要合并到Master 或Dev 分支。

  git merge origin/NewFeature  // 将远程分支NewFeature与当前分支合并。

12.png

写在最后

以上从source code control扩散到Git的使用,仅仅只是抛砖引玉。欢迎大家多多指教。

时间: 2024-08-27 22:59:34

从VSS到SVN再到Git 记Git的基本操作的相关文章

命令行操作svn和git和git

前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音,那么问题来了,什么是svn和git呢? svn和git其实都是一种用来管理项目的控制版本工具,他们有很多好处,比如 1.防止代码丢失----可以把自己的代码上传到服务器上 2.适合多人开发----合并代码超级简单 3.能够进行版本回退 4.能解决冲突和bug 5.可以做分支 6.责任到人----可以

VSS转SVN

我们都知道VSS和SVN都是源代码的版本控制软件:最近公司准备把多年使用的VSS代码全部转到SVN中进行管理,查询了一些资料,整理一下,分享给大家 基本分三大步进行,如下: 1.去掉VSS所有绑定 2.删除没必要上传SVN的相关文件 3.上传SVN 1.去掉VSS所有绑定 1)搜索后缀.scc..vssscc..vspscc的文件,全部删除 2)搜索后缀.csproj的全部文件,以记事本的方式打开,删除下面的配置信息: SccProjectName="SAK"SccLocalPath=

coding的svn服务踩坑记

https://www.hojun.cn/https://www.hojun.cn/https://www.hojun.cn/https://www.hojun.cn/https://www.hojun.cn/https://www.hojun.cn/https://www.hojun.cn/https://www.hojun.cn/https://www.hojun.cn/https://www.hojun.cn/ 前言 Q:咳咳,为啥会用到Coding的SVN?A:博主电脑上已经配好一个co

Git 教程 - Git 基本用法

Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创建 git 仓库 初始化 git 仓库 mkdir project  # 创建项目目录 cd project  # 进入到项目目录 git init  # 初始化 git 仓库.此命令会在当前目录新建一个 .git 目录,用于存储 git 仓库的相关信息 初始化提交 touch README git add .  # 将当前目录添加到 git 仓库中, 使用 git add -A 则是添加所有改动的文档 git com

Ubuntu下安装Git以及Git帮助手册【转】

转自:http://milkythinking.com/blog/2011/04/17/install_git_and_manual/ Git简介 Git是一个分布式版本控制系统,对应的是SVN.CVS这样的集中式版本控制系统. 虽然知晓并安装Git是很久以前的事情了,但是我却没怎么用过,一直使用的是SVN.在<Pro Git>中看到的Git的好处有: 本地完整地镜像了代码仓库的所有内容,如果服务器出现故障,可以使用任何一个本地镜像进行恢复.而使用SVN,如果没有对服务器端的数据进行安全悲愤,

git教程--git安装和版本库的创建

git的诞生--这就是牛 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢? 事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码! 你也许会想,为什么Linus不把Linux代码放到版本控制系统

使用Git、Git GUI和TortoiseGit

1. 关于命令行 我一直建议在命令行中使用Git或者SVN.因为这样可能更加了解他们的工作方式,也不容易遗漏重要的问题和提醒. 在Windows习惯的驱使下,大多数人是不会看弹出的对话框中有什么信息的,一般都是直接关掉.但是,版本库给我们的提示信息都是非常重要的,有的是冲突,有的是提交失败,等等,这些都被略过了. 我碰到的关于版本库使用问题主要包括下面这些: 没有获取到最新版本就编译程序出现这个问题的原因,主要是忽略了文件的冲突.有的是从不看版本库给的提示,有的是太依赖Windows资源管理器中

Git 入门 ---- Git 常用命令

本文作为  Git 入门 ---- Git 与 SVN 区别 的续篇,继续介绍 Git 的入门知识 四. Git 安装 OS X 版本: Mac 一般自带不需要安装 Windos 版本: https://git-for-windows.github.io/ Linux 版本: Linux 一般也是自带无需安装 五. 创建新仓库 创建新文件夹,cd 到文件夹,执行命令: git init  用来创建新 git 仓库 六. 提交文件进仓库 在新建好 git 仓库的文件夹里加入 readme.txt

tortoise git使用 git版本库的rsa key来进行ssh连接

接触git以来 ,开始时用了命令行,但是命令行总归不如图形化菜单方便明了,而GIT本身自带的GUI又用的不习惯,以前用过许久的TOTORISE SVN,幸好有TORTOISE GIT,这个版本图形化工具. 安装了GIT,再安装TORTOISE GIT,界面就比较熟悉了. 一直困扰了好几天,今天总算找到一个比较靠谱的快速方便的使用它来生成key ssh的方法: 1.运行tortoise自带的puttykeygen. 2.生成密钥 rsa,如果需要再做相关对应的password设置等,并将生成的ke