Gitolite配置管理和GIT基本操作

发表于:2018-8-23 16:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:cnblogs_2015    来源:博客园

  简述公司版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分支到主分支
   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号