简述公司版gitolite的项目配置与管理

1. 基于秘钥对的管理

1.1 客户端(需要访问代码库的机器)生成秘钥对,采用RSA加密
ssh-keygen -t rsa -f path_to_store_keys/name_of_your_key
运行后将在指定目录(就是path_to_store_keys)生成:name_of_your_key和name_of_your_key.pub两个文件

1.2 将name_of_your_key.pub发给管理员

1.3 管理员1) 将收到的name_of_your_key.pub拷贝到gitolite-admin/keydir/操作系统/name_of_your_key.pub 2)修改gitolite-admin/conf/gitolite.conf, 对name_of_your_key进行相关项目授权。 注意的是, 管理员可以重命名name_of_your_key.pub,但必须在gitolite.conf中保持一致。

2. 创建项目

由管理员创建项目
2.1 管理员修改gitolite-admin/conf/gitolite.conf (如新增JsmsaClient项目,并指定jsmsa组可读写,所有android组可读)

repo oa/msa/JsmsaClient
RW+ = @jsmsa
R = @android

2.2 将上述修改commit和push到服务器

git commit -a -m "Initial create projects"
git push origin master

Push后,在服务器上将自动生成JsmsaClient.git (公司版地址:/home/gituser/repositories/oa/msa/JsmsaClient.git)

3. 使用项目(客户端)

git clone gituser@192.168.1.240:oa/msa/JsmsaClient
(或git clone ssh://gituser@192.168.1.240/oa/cdi/NjcdiClient.git
公司外访问:git clone ssh://gituser@221.226.92.222:12222/oa/cdi/NjcdiClient.git)
本地就获得了版本

4. Git基本使用

4.1、常规操作

4.1.1、检查当前文件状态

git status
1) Untracked files:表示未跟踪文件。(新文件)
2) Changes to be committed:表示已暂存,但未提交。(已git add,但未提交)
3) Changed but not updated:已修改,但未暂存(文件已修改,未git add暂存)

4.1.2、新文件添加到代码库跟踪

git add file1.txt(文件或目录的路径,目录则递归处理)
git add .(跟踪所在目录下的所有文件及子目录)

4.1.3、忽略某些文件不跟踪(.gitignore文件)

# 忽略注释
*.a 忽略所有.a 结尾的文件
*.[oa] 忽略所有以.o 或.a 结尾的文件
bin/
gen/
*.swp
.svn/
.settings/
.classpath
local.properties

4.1.4、查看已暂存和未暂存差异

git diff:查看未暂存和已暂存文件间的差异。
git diff --cached 查看已暂存和上次提交时的差异

4.1.5、删除/移动已跟踪文件

git rm file.txt
git rm -f file.txt 强制删除,适用于已修改且已暂存。
git rm --cached file.txt 从跟踪清单中删除,但不实际删除文件。
git rm *~ 删除当前目录下所有~结尾的文件。
git rm \*~ 递归删除当前目录及子目录下所有~结尾的文件。
git mv file1 file2 #移动文件

4.1.6、提交更新

git commit
git commit -m "Story 1: Fix some bugs"

跳过暂存直接提交

git commit -a -m "Story 2: Fix some bugs"

4.1.7、查看提交历史

git log 按提交时间列出所有的更新,最近的更新排在最上面。
-p 展开显示每次提交的内容差异。
-n 仅显示最近的n 条提交。
--stat 仅显示简要的增改行数统计。
--author 仅显示指定作者相关的提交。
--committer 仅显示指定提交者相关的提交。
--grep 搜索提交说明中的关键字。
--all-match 同时满足指定的选项。 git log --since=2.weeks
git log --since="2008-10-01" --before="2008-11-01"
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。

4.1.8、查看版本细节

git show xx 查看项目特定版本更新细节
git show HEAD 显示当前分支的最新版本的更新细节 git show HEAD^ 查看HEAD 的父版本更新细节
git show HEAD^^ 查看HEAD 的祖父版本更新细节
git show HEAD~4 查看HEAD 的祖父之祖父的版本更新细节

4.2、撤销操作

4.2.1、修改最后一次提交

git commit --amend
注:若文件状态没变化,则修改提交说明,否则修正并覆盖上次提交。

4.2.2、取消已经暂存的文件

git reset HEAD filename

4.2.3、取消对文件的修改

git checkout -- filename

4.3、远程仓库的使用

4.3.1、创建项目的远程库
参见 2.2

4.3.2、查看项目的远程库

git remote -v (-v 选项显示对应远程库地址)
实例:origin git://github.com/schacon/ticgit.git

4.3.3、从远程仓库抓取数据

从指定远程仓库中拉取所有本地仓库没有的数据。

git fetch [remote-name]
注意事项:
1)如果是克隆了一个仓库,此命令会自动将远程仓库归于origin名下。
2)fetch 命令只拉取数据,不会自动合并到当前工作分支。
3)git clone 本质是创建本地master分支,并用于跟踪远程仓库中的master分支。

4.3.4、推送数据到远程仓库

git push [remote-name] [branch-name]
实例:git push origin master
注:克隆操作会自动使用默认的master仓库和origin分支名称

4.3.5、查看远程仓库信息

git remote show [remote-name]
1)New remote branches
哪些远端分支还没有同步到本地 2)Local branch pushed with 'git push'
运行git push 时缺省推送的分支 3)Stale tracking branches
已同步到本地的远端分支在远端服务器上已被删除。

4.3.6、远程仓库的删除和重命名

git remote rename [remote-name] [new-remote-name] #重命名
git remote rm [remote-name] #删除

4.4、本地标签管理

4.4.1、显示已有的标签

git tag #按字母顺序显示
git tag -l 'v1.4.2.*' #显示特定标签

4.4.2、新建标签

git tag v1.4  #轻量级的标签
git tag -a v1.4 -m 'my version 1.4' #含附注的标签

4.4.3、后期加注标签

git tag -a v1.2 9fceb02

4.4.4、签署验证标签

git  -s v1.5 -m 'my signed 1.5 tag' #签署标签
git tag -v [tag-name] #验证标签
git show [tag-name] #查看相应标签的版本信息

4.4.5、推送标签至远程仓库

git push origin [tagname] #推送某个标签
git push origin --tags #推送所有标签

4.4.6、删除标签

git tag -d v1.0.0 #删除本地标签
git push origin :refs/tags/v1.0.0 #删除远程标签

5. GIt 分支管理

5.1、新建本地分支

git branch testing #创建testing分支
git checkout testing #切换至testing分支
git checkout -b iss53 #创建并切换至iss53分支。

5.2、合并本地分支

git checkout master  #首先切换到主分支
git merge hotfix #测试完毕后,合并hotfix分支
git branch -d hotfix #删除已合并的hotfix分支

5.3、解决合并冲突

git status #合并失败的文件以"unmerged"标出
git add . #标记冲突已解决,并暂存文件
git mergetool #Git默认图形化冲突解决工具

5.4、合并远程分支

origin/master #格式:远程仓库/分支名
git merge origin/serverfix #合并远程分支serverfix到当前分支

5.5、删除远程分支

#git push [远程仓库名] :[远程分支]
#注意区别:git push [远程名] [本地分支]:[远程分支]
git push origin :serverfix #删除远程分支

5.6、创建跟踪分支

方法一:

git checkout -b [分支名] [远程名]/[分支名]
git checkout -b serverfix origin/serverfix

方法二:(适用1.6.2以上版本Git)

git checkout --track [远程名]/[分支名]
git checkout --track origin/serverfix

5.7、查看分支

git branch #列出所有分支,星号"*"表示当前所在分支。
git branch -v #查看各分支最后一次提交信息 #查看已和当前分支合并的分支
#可用git branch -d 删掉未标星号的分支,因为已经合并了。
git branch --merged #查看未和当前分支合并的分支
#强制删除未合并的分支git branch -D
git branch --no-merged

5.8、衍合所在分支

git checkout experiment #切换到需要衍合的分支
git rebase master #衍合experiment分支到主分支

Gitolite配置管理和GIT基本操作的更多相关文章

  1. Gitolite轻松部署/管理git server

    对于今天越来越受欢迎的Git,相信做开发的朋友都基本有所耳闻.它最大的便利就是分布式的开发库,让使用git作为源码管理库的开发者可以在本地提交代码的修改而不用提交到远程的库,同时需要和团队协作.同步代 ...

  2. Git-Runoob:Git 基本操作

    ylbtech-Git-Runoob:Git 基本操作 1.返回顶部 1. Git 基本操作 Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比.本章将对有关创建与提交你的项目快照的命令作 ...

  3. 学习如何运用GitHub网站+出现的问题+Git基本操作总结

    首先介绍一下GitHub网站: github是一个基于git的代码托管平台. GitHub 拥有一个非常鼓励合作的社区氛围.这一方面源于 GitHub 的付费模式:私有项目需要付费,而公共项目完全免费 ...

  4. 配置 Gitblit 进行 Git 代码管理

    配置 Gitblit 进行 Git 代码管理 环境 CentOS 7 x64 IP: 10.6.0.2 首先需要安装jdk  安装步骤 就略过了 下载最新版本  gitblit wget http:/ ...

  5. 《跟我学IDEA》二、配置maven、git、tomcat

    上一篇博文我们讲解了如何去下载并安装一个idea,在这里我们推荐的是zip的解压版,另外我们配置的一些编码和默认的jdk等.今天我们来学习配置maven.git.tomcat等.还是那句话,工欲善其事 ...

  6. SaltStack配置管理和YAML

    配置管理和YAML 配置管理 所谓的配置管理,也称为状态管理,就是可以通过编写文件,文件的内容为安装什么功能.开启什么服务,执行什么任务等信息,然后通过salt的配置管理,指定minion来执行这些操 ...

  7. 配置多个 git 账号的 ssh密钥

    背景 在工作中,我们通常会以 ssh 的方式配置公司的 git 账号,但是平时也会使用 github 管理自己的项目.因此,我们需要为自己的 github 创建一个新的 git 账号,这就需要生成新的 ...

  8. 配置多个git账号的ssh密钥

    博客改版,请直接访问新版文章:https://www.cnblogs.com/xiaoxi666/p/9975981.html 背景 我们在工作中会以 ssh 的方式配置公司的 git 账号,但是平时 ...

  9. Git基本操作和GtHub 特殊技巧

    <GitHub 入门与实践> 笔记 了解GitHub Git 和 GitHub 的区别 在Git中,开发者将源代码存入名为"Git仓库"的资料库中,并加以使用.而Git ...

随机推荐

  1. C++实现大数据乘法

    结构体定义与封装 struct bigdatacom { private : ]; ]; public : void init(const char *str1,const char *str2) { ...

  2. 用java程序打印菱形

    代码如下

  3. 使用MySQL索引的几个问题

    1.索引不存储null值 更准确的说,单列索引不存储null值,复合索引不存储全为null的值.索引不能存储Null,所以对这列采用is null条件时,因为索引上根本 没Null值,不能利用到索引, ...

  4. Net4.0---AspNet中URL重写的改进(转载)

    转载地址:http://www.cnblogs.com/oec2003/archive/2010/07/27/1785862.html URL重写有很多的好处,如有利于SEO.便于记忆.隐藏真实路径使 ...

  5. php文件上传类

    <?php header("Content-Type:text/html; charset=utf-8"); if($_POST['submit']){ $upfiles = ...

  6. 【Tyvj】1473校门外的树3 线段树/树状数组 <区间修改+单点访问>

    描述  校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:K=1,读入l,r表示在l ...

  7. WireShark抓包过程

    wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了. 为了安全考虑 ...

  8. ITEYE中的读书笔记:重构其实就是持续改进

    原文地址:http://hawkon.iteye.com/blog/2093338#bc2355877 前段时间同事参加ITEYE的试读有奖, 没想到得了个奖,拿到一本书.由于同事的推荐我也认真读了一 ...

  9. HTML-Canvas03

    颜色合成 globalCompositeOperation 属性: //先绘制一个图形. ctx.fillStyle = "#00ff00"; ctx.fillRect(10,10 ...

  10. 2015CCPC小记

    距离第一届CCPC也正好一星期了,突然想到还没写总结,现在补上.做为刚度过大一的我,能有机会去参加国赛是很激动的.周五下午出发,坐了13个小时的火车抵达南阳,南阳不算大城市,有点落后,但是这里的人很热 ...