
【Version control】
文章平均质量分 91
shaonbean
关注稳定性建设,SRE体系建设
展开
-
CentOS7安装使用svn
CentOS7安装使用svn安装版本控制工具Subversion安装Subversion[root@vm-06 ~]# yum -y install subversion创建一个存储库。例如,笔者这里创建“/var/svn/repos/project”[root@vm-06 ~]# mkdir -p /var/svn/repos/project [root...原创 2018-06-26 13:40:53 · 896 阅读 · 0 评论 -
10.2 Git 内部原理 - Git 对象
Git 对象Git 是一个内容寻址文件系统。 看起来很酷, 但这是什么意思呢? 这意味着,Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索(retrieve)该内容。 可以通过底层命令 hash-object 来演示上述效果——该命令可将任意数据保存于 .git翻译 2016-10-10 17:18:36 · 1225 阅读 · 0 评论 -
10.1 Git 内部原理 - 底层命令和高层命令
无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理和实现方式。 我们发现学习这部分内容对于理解 Git 的用途和强大至关重要。不过也有人认为这些内容对于初学者而言可能难以理解且过于复杂。 因此我们把这部分内容放在最后一章,在学习过程中可以先阅读这部分,也可以晚点阅读这部分,这取决于你自己。无论如何,既然已经读到了这里,就让我们开始吧。翻译 2016-10-10 17:18:00 · 790 阅读 · 0 评论 -
9.2 Git 与其他系统 - 迁移到 Git
迁移到 Git如果你现在有一个正在使用其他 VCS 的代码库,但是你已经决定开始使用 Git,必须通过某种方式将你的项目迁移至 Git。 这一部分会介绍一些通用系统的导入器,然后演示如何开发你自己定制的导入器。 你将会学习如何从几个大型专业应用的 SCM 系统中导入数据,不仅因为它们是大多数想要转换的用户正在使用的系统,也因为获取针对它们的高质量工具很容易。Subversion如果翻译 2016-10-10 17:17:08 · 1244 阅读 · 0 评论 -
9.1 Git 与其他系统 - 作为客户端的 Git
现实并不总是尽如人意。 通常,你不能立刻就把接触到的每一个项目都切换到 Git。 有时候你被困在使用其他 VCS 的项目中,却希望使用 Git。 在本章的第一部分我们将会了解到,怎样在你的那些托管在不同系统的项目上使用 Git 客户端。在某些时候,你可能想要将已有项目转换到 Git。 本章的第二部分涵盖了从几个特定系统将你的项目迁移至 Git 的方法,即使没有预先构建好的导入工具,我们也有翻译 2016-10-10 17:15:34 · 2860 阅读 · 0 评论 -
8.4 自定义 Git - 使用强制策略的一个例子
使用强制策略的一个例子在本节中,你将应用前面学到的知识建立这样一个 Git 工作流程:检查提交信息的格式,并且指定只能由特定用户修改项目中特定的子目录。 你将编写一个客户端脚本来提示开发人员他们的推送是否会被拒绝,以及一个服务器端脚本来实际执行这些策略。我们待会展示的脚本是用 Ruby 写的,部分是由于我习惯用它写脚本,另外也因为 Ruby 简单易懂,即便你没写过它也能看明白。 不翻译 2016-10-10 17:14:43 · 924 阅读 · 0 评论 -
8.3 自定义 Git - Git 钩子
Git 钩子和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 你可以随心所欲地运用这些钩子。安装一个钩子钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。 当翻译 2016-10-10 17:09:57 · 1620 阅读 · 0 评论 -
8.2 自定义 Git - Git 属性
Git 属性你也可以针对特定的路径配置某些设置项,这样 Git 就只对特定的子目录或子文件集运用它们。 这些基于路径的设置项被称为 Git 属性,可以在你的目录下的 .gitattributes 文件内进行设置(通常是你的项目的根目录)。如果不想让这些属性文件与其它文件一同提交,你也可以在 .git/info/attributes文件中进行设置。通过使用属性,你可以对项目中的文件或翻译 2016-10-10 17:09:10 · 1623 阅读 · 0 评论 -
8.1 自定义 Git - 配置 Git
到目前为止,我们已经阐述了 Git 基本的运作机制和使用方式,介绍了许多 Git 提供的工具来帮助你简单且有效地使用它。 在本章,我们将演示如何借助 Git 的一些重要的配置方法和钩子机制,来满足自定义的需求。 通过这些工具,它会和你、你的公司或你的团队配合得天衣无缝。配置 Git你在 起步 中看到,可以用 git config 配置 Git。 首先要做的事情就是设置你的名翻译 2016-10-10 17:07:23 · 1672 阅读 · 0 评论 -
7.14 Git 工具 - 凭证存储
凭证存储如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据。 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要用户名和密码的。 这在使用双重认证的情况下会更麻烦,因为你需要输入一个随机生成并且毫无规律的 token 作为密码。幸运的是,Git 拥有一个凭证系统来处理这个事情。 下面有一些 G翻译 2016-10-10 17:05:30 · 1744 阅读 · 0 评论 -
7.13 Git 工具 - 替换
替换Git 对象是不可改变的,但它提供一种有趣的方式来用其他对象假装替换数据库中的 Git 对象。replace 命令可以让你在 Git 中指定一个对象并可以声称“每次你遇到这个 Git 对象时,假装它是其他的东西”。 在你用一个不同的提交替换历史中的一个提交时,这会非常有用。例如,你有一个大型的代码历史并想把自己的仓库分成一个短的历史和一个更大更长久的历史,短历史供新翻译 2016-10-10 17:04:26 · 1257 阅读 · 0 评论 -
7.12 Git 工具 - 打包
打包虽然我们已经了解了网络传输 Git 数据的常用方法(如 HTTP,SSH 等),但还有另外一种不太常见却又十分有用的方式。Git 可以将它的数据 “打包” 到一个文件中。 这在许多场景中都很有用。 有可能你的网络中断了,但你又希望将你的提交传给你的合作者们。 可能你不在办公网中并且出于安全考虑没有给你接入内网的权限。 可能你的无线、有线网卡坏掉了。 可能你现在没有共享服务器的权翻译 2016-10-10 17:03:43 · 889 阅读 · 0 评论 -
7.11 Git 工具 - 子模块
子模块有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。我们举一个例子。 假设你正在开发一个网站然后创建了 Atom 订阅。 你决定使用一个库,而不是写自己的 Atom 生成代码。 你可能不得不通过 CPAN 安装或 Ruby ge翻译 2016-10-10 17:01:43 · 1543 阅读 · 0 评论 -
7.10 Git 工具 - 使用 Git 调试
使用 Git 调试Git 也提供了两个工具来辅助你调试项目中的问题。 由于 Git 被设计成适用于几乎所有类型的项目,这些工具是比较通用的,但它们可以在出现问题的时候帮助你找到 bug 或者错误。文件标注如果你在追踪代码中的一个 bug,并且想知道是什么时候以及为何会引入,文件标注通常是最好用的工具。 它展示了文件中每一行最后一次修改的提交。 所以,如果你在代码中看到一个有问题的方翻译 2016-10-10 16:57:26 · 655 阅读 · 0 评论 -
7.9 Git 工具 - Rerere
Rereregit rerere 功能是一个隐藏的功能。 正如它的名字 “reuse recorded resolution” 所指,它允许你让 Git 记住解决一个块冲突的方法,这样在下一次看到相同冲突时,Git 可以为你自动地解决它。有几种情形下这个功能会非常有用。 在文档中提到的一个例子是如果你想要保证一个长期分支会干净地合并,但是又不想要一串中间的合并提交。 将 rer翻译 2016-10-10 16:56:42 · 2381 阅读 · 0 评论 -
7.8 Git 工具 - 高级合并
高级合并在 Git 中合并是相当容易的。 因为 Git 使多次合并另一个分支变得很容易,这意味着你可以有一个始终保持最新的长期分支,经常解决小的冲突,比在一系列提交后解决一个巨大的冲突要好。然而,有时也会有棘手的冲突。 不像其他的版本控制系统,Git 并不会尝试过于聪明的合并冲突解决方案。 Git 的哲学是聪明地决定无歧义的合并方案,但是如果有冲突,它不会尝试智能地自动解决它。 因翻译 2016-10-10 16:54:19 · 2037 阅读 · 0 评论 -
7.7 Git 工具 - 重置揭密
重置揭密在继续了解更专业的工具前,我们先讨论一下 reset 与 checkout。 在你初次遇到的 Git 命令中,这两个是最让人困惑的。 它们能做很多事情,所以看起来我们很难真正地理解并恰当地运用它们。 针对这一点,我们先来做一个简单的比喻。三棵树理解 reset 和 checkout 的最简方法,就是以 Git 的思维框架(将其作为内容管理器)来管理三棵不同的树。 “翻译 2016-10-10 16:53:32 · 765 阅读 · 0 评论 -
7.6 Git 工具 - 重写历史
重写历史许多时候,在使用 Git 时,可能会因为某些原因想要修正提交历史。 Git 很棒的一点是它允许你在最后时刻做决定。 你可以在将暂存区内容提交前决定哪些文件进入提交,可以通过 stash 命令来决定不与某些内容工作,也可以重写已经发生的提交就像它们以另一种方式发生的一样。 这可能涉及改变提交的顺序,改变提交中的信息或修改文件,将提交压缩或是拆分,或完全地移除提交 - 在将你的工作成果翻译 2016-10-10 16:52:38 · 1115 阅读 · 0 评论 -
10.3 Git 内部原理 - Git 引用
Git 引用我们可以借助类似于 git log 1a410e 这样的命令来浏览完整的提交历史,但为了能遍历那段历史从而找到所有相关对象,你仍须记住 1a410e 是最后一个提交。 我们需要一个文件来保存 SHA-1 值,并给文件起一个简单的名字,然后用这个名字指针来替代原始的 SHA-1 值。在 Git 里,这样的文件被称为“引用(references,或缩写为 refs)”;翻译 2016-10-10 18:43:14 · 829 阅读 · 0 评论 -
10.4 Git 内部原理 - 包文件
包文件让我们重新回到示例 Git 版本库的对象数据库。 目前为止,可以看到有 11 个对象——4 个数据对象、3 个树对象、3 个提交对象和 1 个标签对象:$ find .git/objects -type f.git/objects/01/55eb4229851634a0f03eb265b69f5a2d56f341 # tree 2.git/objects/1a/410efbd翻译 2016-10-10 18:43:55 · 679 阅读 · 0 评论 -
gitlab使用教程
图文介绍gitlab使用gitlab登录个人设置创建项目新建账户给账户设置项目权限 项目设置持续集成 添加ssh keys查看提交记录 发起merge request标签使用 ...原创 2018-06-08 09:31:07 · 2045 阅读 · 0 评论 -
gitlab备份与恢复
1、gitlab备份与恢复 参考:https://docs.gitlab.com/ce/raketasks/backup_restore.html创建系统备份sudo gitlab-rake gitlab:backup:create备份文件存在/var/opt/gitlab/backups,可编辑/etc/gitlab/gitlab.rb修改源码安装使用下面命令备份sud...原创 2017-09-08 09:06:14 · 3008 阅读 · 0 评论 -
实现Shell脚本自动备份Gitlab档案并同步到远程
实现脚本自动备份Gitlab档案并同步到远程 参考:Gitlab的备份与恢复Gitlab服务器与备份服务器进行密钥配对,免密使用scp传输Gitlab备份文件 Gitlab Server: 192.168.0.55 Bakcup SWerver: 192.168.0.222在Gitlab服务器上生产密钥对ssh-keygen -t rsa拷贝...原创 2017-09-08 15:57:18 · 3183 阅读 · 3 评论 -
Omnibus GitLab 使用说明
1、Omnibus GitLab 使用说明> 参考:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#backup-and-restore-omnibus-gitlab-configuration1.1 说明该项目为GitLab创建了特定于平台的平台特有的可下载软件包(https://about.gitlab...原创 2017-09-08 09:07:47 · 5210 阅读 · 1 评论 -
使用Gitlab创建git项目
使用Gitlab创建git项目登录gitlab系统,访问自己的gitlab.example.com,然后使用gitlab用户,登录第一次登录需要重新修改默认登录密码登录成功,看到下面界面,新建一个项目test,描述为test for git,然后点击创建如下图:如上图可以看到项目已经创建成功根据提示设置用户信息git config --global user.name "test"git co原创 2017-07-10 18:31:28 · 4249 阅读 · 0 评论 -
CentOS/RHEL 7/6 安装最新Git
安装依赖包 本文环境CentOS 6.8 ,默认安装git为1.7.1,实验需要升级git版本yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y卸载旧gityum remove git -y下载Git源代码并编译安装Git source原创 2016-12-14 21:06:49 · 2381 阅读 · 0 评论 -
11 个 Linux 上最佳的图形化 Git 客户端
Git是一种免费开源的分布式版本控制系统,可用于处理软件开发及另外几种版本控制任务。它旨在处理大大小小的各种项目,并确保速度、效率和数据完整性。Linux用户主要可以通过命令行来管理Git,不过外面有几种图形化用户界面(GUI)Git客户软件,它们便于用户在Linux桌面上高效、可靠地使用Git,即便提供不了所有命令行操作,至少也提供大多数此类操作。下面列出了面向Linux转载 2016-11-30 16:14:39 · 34369 阅读 · 0 评论 -
CentOS 7.2 安装Subversion(SVN)
subversion 简介Subversion是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。 Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。subve原创 2016-11-11 14:57:29 · 12681 阅读 · 0 评论 -
6.1 GitHub - 账户的创建和配置
GitHub 是最大的 Git 版本库托管商,是成千上万的开发者和项目能够合作进行的中心。 大部分 Git 版本库都托管在 GitHub,很多开源项目使用 GitHub 实现 Git 托管、问题追踪、代码审查以及其它事情。 所以,尽管这不是 Git 开源项目的直接部分,但如果想要专业地使用 Git,你将不可避免地与 GitHub 打交道,所以这依然是一个绝好的学习机会。本章将讨论如何高效地翻译 2016-10-10 16:41:05 · 703 阅读 · 0 评论 -
图解 Git 使用
此页图解git中的最常用命令。如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻。 如果你想知道这个站点怎样产生,请前往https://github.com/MarkLodato/visual-git-guide转载 2016-10-18 14:06:16 · 1167 阅读 · 0 评论 -
Best Graphical Git Clients and Git Repository Viewers for Linux
Git is a free and open source distributed version control system for software development and several other version control tasks. It is designed to cope with everything from small to very large pro转载 2016-10-24 10:21:23 · 753 阅读 · 0 评论 -
Git 命令归纳总结
设置与配置有两个命令使用得最多了,从第一次调用 Git到每天的日常微调及参考,这个两个命令就是: config和 help 命令git configGit 做的很多工作都有一个默认方式。 对于绝大多数工作而言,你可以改变 Git 的默认方式,或者根据你的偏好来设置。 这些设置涵盖了所有的事,从告诉 Git 你的名字,到指定偏好的终端颜色,以及你使用的编辑器。 此命令会从几个特定的配翻译 2016-10-13 13:16:03 · 2143 阅读 · 0 评论 -
10.8 Git 内部原理 - 环境变量
环境变量Git 总是在一个 bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。 这里不会列出所有的 Git 环境变量,但我们会涉及最有的那部分。全局行为像通常的程序一样,Git 的常规行为依赖于环境变量。GIT_EXEC_PATH 决定 Git 到哪找它的子程翻译 2016-10-10 18:49:56 · 7666 阅读 · 0 评论 -
10.7 Git 内部原理 - 维护与数据恢复
维护与数据恢复有的时候,你需要对仓库进行清理 - 使它的结构变得更紧凑,或是对导入的仓库进行清理,或是恢复丢失的内容。 这个小节将会介绍这些情况中的一部分。维护Git 会不定时地自动运行一个叫做 “auto gc” 的命令。 大多数时候,这个命令并不会产生效果。 然而,如果有太多松散对象(不在包文件中的对象)或者太多包文件,Git 会运行一个完整的 git gc 命令。 “gc翻译 2016-10-10 18:45:38 · 992 阅读 · 0 评论 -
10.6 Git 内部原理 - 传输协议
传输协议Git 可以通过两种主要的方式在版本库之间传输数据:“哑(dumb)”协议和“智能(smart)”协议。 本节将会带你快速浏览这两种协议的运作方式。哑协议如果你正在架设一个基于 HTTP 协议的只读版本库,一般而言这种情况下使用的就是哑协议。 这个协议之所以被称为“哑”协议,是因为在传输过程中,服务端不需要有针对 Git 特有的代码;抓取过程是一系列 HTTP 的 GET翻译 2016-10-10 18:45:05 · 740 阅读 · 0 评论 -
10.5 Git 内部原理 - 引用规格
引用规格纵观全书,我们已经使用过一些诸如远程分支到本地引用的简单映射方式,但这种映射可以更复杂。 假设你添加了这样一个远程版本库:$ git remote add origin https://github.com/schacon/simplegit-progit上述命令会在你的 .git/config 文件中添加一个小节,并在其中指定远程版本库的名称(origin)、URL翻译 2016-10-10 18:44:30 · 698 阅读 · 0 评论 -
7.5 Git 工具 - 搜索
搜索无论仓库里的代码量有多少,你经常需要查找一个函数是在哪里调用或者定义的,或者一个方法的变更历史。 Git 提供了两个有用的工具来快速地从它的数据库中浏览代码和提交。 我们来简单的看一下。Git GrepGit 提供了一个 grep 命令,你可以很方便地从提交历史或者工作目录中查找一个字符串或者正则表达式。 我们用 Git 本身源代码的查找作为例子。默认情况下 Git翻译 2016-10-10 16:51:55 · 461 阅读 · 0 评论 -
7.4 Git 工具 - 签署工作
签署工作Git 虽然是密码级安全的,但它不是万无一失的。 如果你从因特网上的其他人那里拿取工作,并且想要验证提交是不是真正地来自于可信来源,Git 提供了几种通过 GPG 来签署和验证工作的方式。GPG 介绍首先,在开始签名之前你需要先配置 GPG 并安装个人密钥。$ gpg --list-keys/Users/schacon/.gnupg/pubring.gpg---翻译 2016-10-10 16:50:37 · 716 阅读 · 0 评论 -
7.3 Git 工具 - 储藏与清理
储藏与清理有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态,而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是 git stash 命令。储藏会处理工作目录的脏的状态 - 即,修改的跟踪文件与暂存改动 - 然后将未完成的修改保存到一个栈上,而你可以在任何时候重新应用这翻译 2016-10-10 16:48:57 · 711 阅读 · 0 评论 -
3.5 Git 分支 - 远程分支
远程分支远程引用是对远程仓库的引用(指针),包括分支、标签等等。 你可以通过 git ls-remote (remote)来显式地获得远程引用的完整列表,或者通过 git remote show (remote) 获得远程分支的更多信息。 然而,一个更常见的做法是利用远程跟踪分支。远程跟踪分支是远程分支状态的引用。 它们是你不能移动的本地引用,当你做任何网络通信操作时,它们翻译 2016-10-10 15:50:11 · 655 阅读 · 0 评论