Linux 下代码管理

Linux 下代码管理

1. 两种代码管理工具

svn 和 git 是现在最普遍使用的两个代码管理工具,svn 的全称是 subversion,是一个开源版本控制系统。git 是 Linux 创始人 Linus 发起的,最初目的是更好的管理 Linux 内核代码。两者之间的区别就是 git 不需要依赖服务端就可以工作,即 git 是分布式的。至于 GitHub 和 gitlab,GitHub 是基于 git 的在线 web 页面代码托管平台,gitlab 可以认为是一个开源的 GitHub,两者没有直接关系。

2. svn 的安装与使用

2.1 安装 svn

# yum install -y subversion
# makdir -p /data/svnroot/myproject   //安装版本库,即配置文件。。。
# svnadmin create /data/svnroot/myproject
# cd /data/svnroot/myproject/conf
# vim authz  //配置权限配置文件
[内容如下]
	[groups]
	admins = username1,username2  //admins 组包含 user1,user2用户
	[/]
	@admins = rw  //设置组权限
	* = r   //其他组的权限是 可读
	[myproject:/]   //针对项目设置权限
	user1 = rw
[精致的结尾]
# vim passwd     //设置用户的密码
[内容如下]
	[users]
	lsk=lsk000           
	user1=user1000
	user2=user2000
[精致的结尾]
#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 
# cd /opt/
# svn checkout url --username=   //拉取项目,即将远端的项目下载到本地
	[关于url] 如果远端是浏览器,则直接在浏览器复制。远端是 Linux 则格          式为 svn://IP/project_name

2.2 使用 svn

① 向项目中增加一个文件

cp /root/1.txt .   //将要增加的文件复制到项目目录下
svn add 1.txt     //在本地增加这个文件
svn commit -m "add new file 1.txt"  //向服务器提交改动的说名
svn up  //更新版本,有时候版本更新不及时

② 在项目中删除一个文件

# svn delete 1.txt  //在本地删除
# svn commit -m "delete a file 1.txt" //向服务器提交操作

③ 查看变更日志

# svn log  //查看变更日志

2. git 的使用

2.1 单机使用 git

① 下载及配置

# yum install -y git
# git config --global user.name "lsk"				//配置基本信息
# git config --global user.email "[email protected]"
# mkdir /data/gitroot   //创建仓库
# cd /data/gitroot
# git init	 //初始化仓库

② 增加文件

# git add 1.txt
# git commit -m"add new file 1.txt" //基本和 svn 一样
[错误fatal: Not a git repository (...): .git]
	重新 git init 即可。

③ 更改文件

# echo "hello world2" >> 1.txt
# git add 1.txt 
# git commit -m"version 2"
[只需要在重新增加和提交即可]

④ 版本回溯

# git log //获取回溯版本的“乱码”,如dc72730
# git reset --hard dc72730 //即可恢复到原来的版本
[关于 git log]
	git log --pretty=oneline  //每个版本信息只占一行,简洁
	git reflog //显示所有的版本

⑤ 撤销修改

# rm -f 1.txt //不小心删除了 1.txt 
# git checkout -- 1.txt //恢复了 1.txt 

⑥ 删除文件

# git rm 1.txt
# git commit -m"delete a file 1.txt"

2.2 建立远程仓库

① 在 GitHub 上注册账号

② 点击 new

③ 名字自定义,例如gitroot,然后选中“Public”,点击“Createrepository”按钮

④ 添加key:单击右上角自己的头像,在下拉菜单中选择“settings”选项。

⑤ 在跳转的页面中左侧菜单栏选择SSH and GPG keys,右侧单击“New SSH key”按钮,把Linux机器上的/root/.ssh/id_rsa.pub内容粘贴到这里。

# ssh-keygen    //生成密钥

⑥ 将本地仓库推送到远程仓库

# git remote add origin url //url 是在GitHub上复制的
# git push -u origin master  //将本地仓库推送到远程仓库
# cd /opt/
# git clone url //将远程仓库克隆到本地
[在本地仓库操作完数据后,需要 git push 才能和远程同步!!]

2.3 git 分支

① 分支操作

# git branch 		//查看分支
   * master          //星号代表当前在那个分支位置
 #git branch lsk  	//创建分支
 #git checkout lsk 	//切换到了lsk分支下

② 分支的合并

 # git checkout master	 //合并分支之前,先切换到目标分支 
 # git merge lsk  	 //把lsk分支合并到了master
 [注意事项]
 	如果两个分支有同名的文件,但是内容不一样,就会造成分支冲突,这时就不能合并分支了。

③ 分支删除

# git  branch -d lsk	//删除分支
# git branch -D lsk  //如果分支没有合并,就不能删除,该命令强制删除

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

⑤ 远程分支

# git ls-remote origin    //查看远程分支
# git push origin branch-name //将本地的特定分支推送到远程
# git pull //如果 push 失败,可以试试这个,然后再 push
# git checkout -b branch-name origin/branch-name //git clone 的时候,默认只把 master 分支克隆下来。如果想,要克隆其他分支,用这个命令。

2.4 git 标签

标签类似于快照功能,可以给版本库打一个标签,记录某个时刻库的状态。也可以随时恢复到该状态。

# git tag v1.o //建立一个名为 v1.o 的标签,在 master 分支上
# git show v1.o // 查看标签的详细信息
# git tag   //查看所有的标签名
# git log --pretty=oneline --abbrev-commit //查看历史 commit 
# git tag tag-name max-code //针对历史 commit 打标签
# git tag -a tag-name -m "expression" //对标签进行描述
# git tag -d tag-name //删除标签
# git push origin tag-name //推送指定标签到远程
# git push --tag origin //推送所有标签
既要删除本地标签又要删除远程标签
# git tag tag-name -d
# git push origin :refs/tags/tag-name

2.5 git 别名

# git config --global alias.ci commit  //将 commit 改名为 ci
# git config --list | grep alias  //查看已设别名
# git config --global --unset alias.ci //取消 ci 别名
**查询 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"

2.6 git 服务器的搭建

//找一台服务器,首先要安装Git
# yum install git
# git config --global user.name "lsk"				//配置基本信息
#git config --global user.email "[email protected]"

//添加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
# ll /home/git/.ssh/authorized_keys 
-rw-------. 1 git git 1226 Aug  5 07:03 /home/git/.ssh/authorized_keys

//定好存储Git仓库的目录,比如 /data/gitpub
# mkdir /data/gitpub
# cd /data/gitpub
# git init --bare sample.git 	//会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾
# chown -R git.git sample.git
# ll 
total 4
drwxr-xr-x. 7 git git 4096 Aug  5 10:01 sample.git
【客户端的操作如下】
//首先要把客户端上的公钥放到git服务器/home/git/.ssh/authorized_keys文件里
 //在客户端上克隆远程仓库
# git clone git@ip:/data/gitpub/sample.git

2.7 gitlab 的使用

# 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 start

//浏览器访问GitLab,输入IP即可
//默认管理员root,无密码,它会让我们去定义一个密码,至少8位数
//GitLab常用命令  https://www.cnyunwei.cc/archives/1204

//GitLab备份  
# gitlab-rake gitlab:backup:create		//创建备份压缩包
//备份目录在/var/opt/gitlab/backups
# ls /var/opt/gitlab/backups/
# gitlab-ctl stop unicorn ; gitlab-ctl stop sidekiq
# gitlab-rake gitlab:backup:restore BACKUP=xxxxx //(这里是一个编号,即备份文件的前缀)	//恢复备份

猜你喜欢

转载自blog.csdn.net/weixin_54898062/article/details/114276288