设为首页 收藏本站
查看: 1715|回复: 0

[经验分享] centos上搭建git服务--4

[复制链接]
发表于 2017-11-15 11:43:02 | 显示全部楼层 |阅读模式
  Git是目前世界上最先进的分布式版本控制系统(没有之一)。使用Svn的请参考《版本控制-svn服务器搭建和常用命令(centos 6.3)》,下面介绍Git的常用命令
  常用命令
  简单版
  升级版
  其他
  服务器搭建
  本地服务器搭建
  Gitolite搭建

  一、简单版
  1、创建版本库



git init
  2、新增修改,新增文件到缓存区



git add
  3、比较文件的差异



git diff
  4、查看仓库状态



git status
  5、从缓存区提交修改(新增)到版本库



git commit -m 'add a.txt'
  6、查看提交日志



git log (--pretty=oneline)
  7、HEAD表示当前版本,HEAD^表示上个版本,HEAD^^上上个版本,HEAD~100表示网上100个版本
  8、更新到指定版本(没有撤销本地修改)



git reset --hard HEAD^
git reset --hard 3628164  # 能区分一个版本的commit id即可
  9、查看每一次命令



git reflog
  10、撤销工作区的修改



git checkout --file  
  假设错误修改了readme.txt,并且git add到了缓存区



git reset HEAD readme.txt   # 回到最新版本,撤销缓存区的修改
git checkout --readme.txt   #  撤销本地修改
  11、删除文件
  删除本地文件直接rm
  删除版本库文件



git rm a.txt
git commit -m‘rm a.txt’
  删除暂存区文件



git rm --cache a.txt
git checkout HEAD(a.txt)  # 会清除工作区和暂存区的修改
  二、升级版
  1、从github添加远程仓库(origin是远程库默认名称,可以更改)



git remote add origin git@github.com:***/learngit.git
  2、把本地的所有修改推送到远程库(push是用本地的master分支,-u是表示第一次将远程库的master和本地的master关联)



git push (-u) origin master
  3、克隆一个仓库(支持ssh和https协议,ssh原生且最快)



git clone git@github.com:***/gitskills.git
  4、创建一个分支并切换到该分支(git鼓励使用分支)



git checkout -b dev
  等于两个命令



git branch dev
git checkout dev
  5、分支命令




DSC0000.gif
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch –d(D) <name>
删除远程分支:git push origin :serverfix

  6、查看分支合并情况日志



git log –graph
git log --graph --pretty=oneline --abbrev-commit
  7、分支管理策略
  master是稳定版本,开发的在其他分支上,稳定后合并到master。
  合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward(默认)合并就看不出来曾经做过合并



git merge --no-ff -m "merge with no-ff" dev
git log --graph --pretty=oneline --abbrev-commit
  8、挂起工作场景



git stash    # 挂起
git stash list   # 查看
git stash pop  # 恢复并删除
等于
git stash apply && git stash drop
  9、多人协作
用下面命令推送自己的修改



git push origin branch-name
  如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;如果合并有冲突,则解决冲突,并在本地提交;没有冲突或者解决掉冲突后,再用下面命令推送就能成功



git push origin branch-name
  如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令



git branch --set-upstream branch-name origin/branch-name
  10、标签操作





git tag <name>    # 新建标签,默认为HEAD,可以指定commit id
git tag -a <tagname> -m "blablabla..."    # 指定标签信息
git tag -s <tagname> -m "blablabla..."    # 用PGP签名标签名
git tag   # 查看所有标签
git show <tagname>   # 看到说明
git tag -d <tagname>   # 本地删除标签
git push origin <tagname>   # 推送标签到远程仓库
git push origin --tags   # 一次性推送所有标签到远程仓库

  PGP签名的标签是不可伪造的,因为可以验证PGP签名。验证签名的方法比较复杂
  要删除远程仓库的标签需要使用



git tag -d <tagname>
git push origin :refs/tags/<tagname>
  三、其他
  1、忽略文件
  在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。我们并不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
  2、配置别名



git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
  每个仓库的Git配置文件都放在.git/config文件中
  四、搭建本地Git服务器
  详情可参考廖雪峰官方网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
  1、安装git



yum install git -y
[iyunv@master git]# git version
git version 1.7.1
  2、新建git账号



[iyunv@master git]# useradd git
[iyunv@master git]# passwd git
[iyunv@master git]# mkdir /data1/git
  3、生成ssh key





[iyunv@master git]# su - git
[git@master ~]$ ssh-keygen -t rsa
[git@master .ssh]$ cd ~/.ssh/
[git@master .ssh]$ touch authorized_keys
[git@master .ssh]$ chmod 600 authorized_keys

  收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。  
  4、初始化git仓库





切回Root账户
[iyunv@master ~]# cd /data1/git/
[iyunv@master git]# git init --bare project.git
Initialized empty Git repository in /data1/git/project.git/
[iyunv@master git]# chown -R git: /data1/git/

  5、禁用shell登陆
  处于安全考虑一般禁用git账户被远程登陆shell。修改/etc/passwd



[iyunv@master git]# vim /etc/passwd
将 git:x:502:502::/home/git:/bin/bash  修改为
git:x:502:502::/home/git:/usr/bin/git-shell


[iyunv@master git]# su - git
fatal: What do you think I am? A shell?
  6、其他地方克隆仓库
  现将公钥添加到 authorized_keys文件中



git clone ssh://git@master:322/data1/git/project.git
  管理公钥可以使用 Gitosis ,因为authorized_keys文件大了很难管理。管理权限请参考下面
  五、Gitolite搭建教程
  参考官网 https://git-scm.com/book/zh/v1/服务器上的-Git-Gitolite
  1、前期准备
  git服务器git@10.16.4.14,git admin机器git@10.16.4.15





root@10.16.4.14$ useradd git
root@10.16.4.14$ passwd git
root@10.16.4.14$ su - git
admin git@10.16.4.15
root@10.16.4.15$ useradd git
root@10.16.4.15$ passwd git
root@10.16.4.15$ su - git
root@10.16.4.15$ ssh-keygen -t -P ''

  send git.pub to git@10.16.4.14:322/home
  2、Admin使用
  git clone



git@10.16.4.15 git clone ssh://git@10.16.4.14:322/gitolite-admin
  add user
  1)获取用户的public ssh key,例如test@10.1.32.164.pub
2)将`1`的pub存放到git@10.16.4.15 /home/git/gitolite-admin/keydir 文件夹下
3)修改/home/git/gitolite-admin/conf/gitolite.conf,赋予`1`用户的仓库权限
4)git add && git commit -m 'add user test...' && git push origin master
5)登陆test@10.1.32.164,git clone `3`中的仓库
  3、权限控制
  参考 https://git-scm.com/book/zh/v1/服务器上的-Git-Gitolite
  参考 http://perthcharles.github.io/2015/08/24/setup-gitolite-service-git-1
  4、解决密码过期问题





[git@Dev_10_16_4_15 gitolite-admin]$ git push origin master
WARNING: Your password has expired.
Password change required but no TTY available.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

  解决命令



[iyunv@Dev_10_16_4_14 ~]# chage -M 999 git

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-407198-1-1.html 上篇帖子: centos上搭建git服务--3 下篇帖子: centos 6.5 gitlab搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表