代码管理平台

你要了解的常识

版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况
版本管理工具发展简史,cvs? svn ? git 参考http://luckypoem14.github.io/test/2012/04/24/scm-history/
svn全称subversion,是一个开源版本控制系统,始于2000年
git是linux创始人linus发起的,2005年发布,最初目的是更好管理linux内核代码
git和svn不同在于git不需要依赖服务端就可以工作,即git是分布式的
关于git和svn的比较大家参考http://blog.lishiming.net/?p=305
github是基于git的在线web页面代码托管平台,可以选择付费服务
gitlab可以认为是一个开源的github,两者没有直接关系

安装svn

yum install -y subversion
创建版本库
mkdir -p /data/svnroot/myproject
svnadmin create /data/svnroot/myproject
cd !$/conf #authz为权限配置文件,passwd为密码文件
vim authz//配置文件改为如下
[groups]
admins = aming,user1
[/]
@admins = rw
*= r
[myproject:/]
user1 = rw

vim passwd//加入如下内容
[users]
aming = aming!(*$123
user1 = user1
^^^123
user2 = user2-***123
vim svnserver.conf//更改或增加如下内容
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svnroot/myproject
svnserve -d -r /data/svnroot //这样就启动了

客户端上使用svn(linux)

yum install -y subversion
svn checkout svn://192.168.133.130/myproject --username=aming
cd myproject ; ls -la
cp /etc/fstab .
svn add . //添加到版本控制中心
svn commit -m “add file” //把文件上传到服务器
svn delete filename //在本地删除
svn commit -m “delete filename” //在服务器上删除
svn update //把当前目录下的文件都更新到最新版
svn log //查看变更日志

客户端上使用svn(windows)

官网 https://tortoisesvn.net/index.zh.html
下载TortoiseSVN 并安装
简明教程 http://www.jianshu.com/p/6b3b7b915332

单机上使用git

版本回退
多更改几次1.txt,然后add,commit
git log//查看所有提交记录
git log --pretty=oneline//一行显示
git reset --hard f7c8e9//回退版本,其中后面跟的字符串是简写
撤销修改
rm -f 1.txt//不小心删除了1.txt
git checkout -- 1.txt//恢复1.txt
如果1.txt文件修改,add后但没有commit,再想回退到上一次提交的状态,可以使用git reset HEAD 1.txt,再执行git checkout -- 1.txt
git reflog //查看所有历史版本

删除文件
echo -e "11111111111\n2222222222" > 2.txt
git rm 2.txt
git commit -m "rm 2.txt"

建立远程仓库

首先到 https://github.com 注册一个账号,创建自己的git,点repositories 再点new
名字自定义,比如叫studygit 选择public 点 create repository
添加key:右上角点自己头像,选择settings,左侧选择SSH and GPG keys
左侧点New SSH key,把linux机器上的~/.ssh/id_rsa.pub内容粘贴到这里
把本地仓库推送到远程仓库 git remote add origin [email protected]:aminglinux/studygit.git //这一步是在远程创建一个新的仓库studygit,名字尽量和本地的一致
git push -u origin master //然后把本地的studygit仓库推送到远程的studygit
下一次再推送,就可以直接 git push

克隆远程仓库

cd /home
git clone [email protected]:aminglinux/lanmp.git
它提示,会在当前目录下初始化一个仓库,并创建一个.git的目录,如下
Initialized empty Git repository in /home/lanmp/.
git/完成后,ls可以看到一个lanmp的目录
cd lanmp
vi lanmp.sh 编辑一下文件,然后提交
git add lanmp.sh
git commit -m "sdlfasdf"
然后再推送到远程服务端
git push

分支

git branch //查看分支
git branch aming //创建分支
git checkout aming //切换到了aming分支下
再用git branch查看,会看到有两个分支master和aming,当前使用的分支前面会有一个*在aming分支下 ,编辑2.txt,并提交到新分支
echo "askdfjlksadjflk" > 2.txt
git add 2.txt
git commit -m "laksjdflksjdklfj"
切换回master分支
git checkout master //此时cat 2.txt发现并没有更改内容

分支的合并

git checkout master //合并分支之前,先切换到目标分支
git merge aming //把aming分支合并到了master
如果master分支和aming分支都对2.txt进行了编辑,当合并时会提示冲突,需要先解决冲突才可以继续合并。
解决冲突的方法是在master分支下,编辑2.txt,改为aming分支里面2.txt的内容。 然后提交2.txt,再合并aming分支。
但是这样有一个问题,万一master分支更改的内容是我们想要的呢? 可以编辑2.txt内容,改为想要的,然后提交。切换到aming分支,然后合并master分支到aming分支即可(倒着合并)。合并分支有一个原则,那就是要把最新的分支合并到旧的分支。也就是说merge后面跟的分支名字一定是最新的分支。
git branch -d aming //删除分支
如果分支没有合并,删除之前会提示,那就不合并,强制删除
git branch -D aming

使用分支的原则

对于分支的应用,建议大家以这样的原则来:
master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上。
创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并到master
开发人员应该在dev的基础上再分支成个人分支,个人分支(在自己pc上)里面开发代码,然后合并到dev分支

dev分支合并bob分支的命令是:
git checkout dev //先切换到dev分支,然后
git merge bob

远程分支

本地新建的分支如果不推送到远程,对其他人就是不可见的
查看远程分支 git ls-remote origin,可以看到所有分支
对于git push分支分两种情况
当本地分支和远程分支一致时
git push会把所有本地分支的变更一同推送到远程,如果想只推送一个分支,使用git push origin branch-name
当本地分支比远程分支多,默认git push 只推送本地和远程一致的分支,想要把多出来的本地分支推送到远程时,使用git push origin branch-name 如果推送失败,先用git pull抓取远程的新提交
git clone的时候默认只把master分支克隆下来,如果想把所有分支都克隆下来,需要手动创建,在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称要一致

标签管理
标签类似于快照功能,可以给版本库打一个标签,记录某个时刻库的状态。也可以随时恢复到该状态。
git checkout master 先切到master分支上
git tag v1.0 给master打一个标签v1.0
git show v1.0 查看标签信息
git tag 可以查看所有的标签
tag是针对commit来打标签的,所以可以针对历史的commit来打tag
git log --pretty=oneline --abbrev-commit //先查看历史的commit
git tag v0.9 46d3c1a //针对历史commit打标签
git tag -a v0.8 -m "tag just v1.1 and so on" 5aacaf4 //可以对标签进行描述
git tag -d v0.8 //删除标签
git push origin v1.0 //推送指定标签到远程
git push --tag origin //推送所有标签
如果本地删除了一个标签,远程也想要删除需要这样操作:
git tag v1.0 -d //删除本地标签
git push origin :refs/tags/v1.0 //删除远程标签

git别名
git commit 这个命令是不是有点长? 用别名可以提高我们的工作效率
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
查看git别名使用命令
git config --list |grep alias
查询log小技巧:
git config --global alias.lg "log --color --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘ --abbrev-commit"
取消别名
git config --global --unset alias.br

搭建git服务器
github毕竟是公开的,而私有仓库又得花钱买。所以我们可以想办法搭建一个私有的,只自己公司使用的。Gitlab是个不错的选择。在介绍它之前,先讲述一下命令行的git服务器
找一台服务器,首先要安装git,yum install git
添加git用户,并且设置shell为/usr/bin/git-shell,目的是为了不让git用户远程登陆
useradd -s /usr/bin/git-shell git
cd /home/git
创建authorized_keys文件,并更改属主、属组和权限,用来存客户端机器上的公钥
mkdir .ssh
touch .ssh/authorized_keys
chown -R git.git .ssh
chmod 600 .ssh/authorized_keys

定好存储git仓库的目录,比如 /data/gitroot
mkdir /data/gitroot
cd /data/gitroot
git init --bare sample.git // 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾
chown -R git.git sample.git
以上操作是在git服务器上做的,平时git服务器是不需要开发人员登录修改代码的,它仅仅是充当着一个服务器的角色,就像github一样,平时操作都是在我们自己的pc上做的
首先要把客户端上的公钥放到git服务器上/home/git/.ssh/authorized_keys文件里
在客户端上(自己pc)克隆远程仓库
git clone [email protected]:/data/gitroot/sample.git
此时就可以在当前目录下生成一个sample的目录,这个就是我们克隆的远程仓库了。进入到这里面,可以开发一些代码,然后push到远程。

使用gitlab
gitlab官网 https://about.gitlab.com/gitlab-com/
官方安装文档 https://about.gitlab.com/installation/?version=ce#centos-7 (ce/ee)
要求服务器内存不少于2g
vim /etc/yum.repos.d/gitlab.repo//加入如下内容
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
yum install -y gitlab-ce
gitlab-ctl reconfigure
netstat -lnpt //查看监听端口
gitlab-ctl stop/restart/start/status
浏览器访问gitlab,输入ip即可
默认管理员root,无密码,它会让我们去定义一个密码
gitlab常用命令 https://www.cnyunwei.cc/archives/1204
gitlab备份 gitlab-rake gitlab:backup:create
备份目录在/var/opt/gitlab/backups
gitlab 恢复 先停服务 gitlab-ctl stop unicorn ; gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=xxxxx (这里是一个编号,即备份文件的前缀)
再启动服务 gitlab-ctl start

原文地址:http://blog.51cto.com/13702610/2134355

时间: 2024-10-07 15:06:58

代码管理平台的相关文章

22.1 代码管理平台介绍 22.2 安装svn 22.3客户端使用svn(linux) 22.4客户端使用svn(windows)

你要了解的常识: 1.版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况 2.版本管理工具发展建设, cvs→svn→git 参考文档: 3.svn全称subversion,是一个开源版本控制系统,始于2000年 4.git是linux创始人linus发起的,2005年发布,最初目的是更好管理linux内核代码 5. 安装svn 客户端使用svn 原文地址:https://www.cnblogs.com/pta188/p/10415917.html

Docker搭建Gitlab代码管理平台

一.Gitlab的安装 宿主机环境: CentOS 7 docker docker-compose 1.查找镜像 docker search gitlab 2.拉取镜像 docker pull gitlab/gitlab-ce 3.构建容器 # 切换目录 mkdir /usr/local/docker cd /usr/local/docker touch docker-compose.yml docker-compose.yml内容如下: version: "3.7" services

Gitlab代码管理平台部署(CentOS6.7—gitlab7.2.12)

部署环境准备 Gitlab需要以下系统与软件环境: Ruby (MRI) 2.1 Git 1.7.10+ Redis 2.4+ MySQL 由于系统的git,ruby环境一般版本比较低,因此需考虑升级. 1.升级git. 删除原系统的git: #rpm -eperl-Git-1.7.1-3.el6_4.1.noarch git-1.7.1-3.el6_4.1.x86_64 源码包编译安装git: #tar -zxvf git-2.6.3.tar.gz #cd git-2.6.3 #autocon

使用git将自己的代码同时保存在多个代码托管平台

现在有很多代码管理平台,例如github,oschina-git,coding.net,我的网速有时候访问github比较慢.这时候我使用国内的.但是只使用一家我已不知道我的代码在他们的管理平台是否足够安全.所以我需要将我的代码同时放到多个平台 我本地游一份代码 每次写完后.我同时推送到多个平台去,下面我使用oschina-git,和coding.net的演示 1 需要自己去oschina-git或者coding.net 建立好仓库,去对应网站操作. 但是这里注意,我们以oschina为我们的默

gitlab管理平台搭建

前言 本篇文章主要介绍的是gitlab代码管理平台的搭建. GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务, 提供代码托管.提交审核和问题跟踪服务, 对于软件工程质量管理非常重要.由乌克兰程序员 DmitriyZaporozhets 和 ValerySizov 开发,它使用Ruby 语言写成.后来一些部分用 Go 语言重写. 1.安装依赖: sudo yum install curl policycoreutils opens

30分钟快速搭建Web CRUD的管理平台--django神奇魔法

加上你的准备的时间,估计30分钟完全够用了,因为最近在做爬虫管理平台,想着快速开发,没想到python web平台下有这么非常方便的框架,简洁而优雅.将自己的一些坑总结出来,方便给大家的使用. 准备环境: 系统:win7 or ubuntu django版本:1.8.5 python版本:2.7.6 数据库:自带的SQLLITE3 IDE: sublime text 3 ===========================Read ? go===========================

开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4

1.前言上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强调代码提交之前必须找团队中经验丰富的人来审核通过后方可提交,但这一条有时候不是所有时候都能得到满足,有没有依赖于机制而不是人来保证代码质量呢,我们知道计算机的缺点也是优点之一就是可以忠实执行指令.答案是有的,那就是SonarQube,其官方网址为:https://www.sonarqube.org/,目前最新版本为6.4.SonarQube是一个开源平台,用于管理源代码的质

[代码管理_版本控制]开放源代码版本控制系统

当前主流的源代码版本控制系统有:CVS. SVN.Git.Bazzar.Mercurial等几类:多数开源软件源代码都是由上述工具管理,典型的 Linux kernel之前通过SVN,现在由Git工具管理,Ubuntu 发行版所有源代码由 Bazzar 管理.Git.Mercurial和Bazzar为下一代分布式版本控制系统,CVS.SVN 为传统的版本控制系统. 由上述版本控制系统为主功能组成的项目托管平台(也可称协同开发平台)包括:google Code ( 支 持 Git, Mercuri

盘点类似于GitHub的代码托管平台码云的2016年度热门项目排行榜TOP 50

码云平台发展至今,涌现了越来越多优秀的开源项目,越来越多的开源作者在上面分享自己的作品.我们希望通过此榜单在回顾总结2016年国内开源趋势,了解开源作者现状的同时,也能便于大家更好地找到自己需要的项目. 2016 年度码云热门项目排行榜 TOP 50 是通过开源项目2016年在码云上的 Watch.Star.Fork 数量来评定的榜单. 1.JFinal 简介: JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.