centos上搭建git服务--4

  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 [email protected]:***/learngit.git

  2、把本地的所有修改推送到远程库(push是用本地的master分支,-u是表示第一次将远程库的master和本地的master关联)

git push (-u) origin master

  3、克隆一个仓库(支持ssh和https协议,ssh原生且最快)

git clone [email protected]:***/gitskills.git

  4、创建一个分支并切换到该分支(git鼓励使用分支)

git checkout -b dev

等于两个命令

git branch dev
git checkout dev

  5、分支命令

查看分支: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

[[email protected] git]# git version
git version 1.7.1

  2、新建git账号

[[email protected] git]# useradd git

[[email protected] git]# passwd git

[[email protected] git]# mkdir /data1/git

  3、生成ssh key

[[email protected] git]# su - git

[[email protected] ~]$ ssh-keygen -t rsa

[[email protected] .ssh]$ cd ~/.ssh/

[[email protected] .ssh]$ touch authorized_keys

[[email protected] .ssh]$ chmod 600 authorized_keys 

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

  4、初始化git仓库

切回Root账户

[[email protected] ~]# cd /data1/git/

[[email protected] git]# git init --bare project.git
Initialized empty Git repository in /data1/git/project.git/

[[email protected] git]# chown -R git: /data1/git/

  5、禁用shell登陆

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

[[email protected] git]# vim /etc/passwd

将 git:x:502:502::/home/git:/bin/bash  修改为
git:x:502:502::/home/git:/usr/bin/git-shell
[[email protected] git]# su - git
fatal: What do you think I am? A shell?

  6、其他地方克隆仓库

现将公钥添加到 authorized_keys文件中

git clone ssh://[email protected]:322/data1/git/project.git

管理公钥可以使用 Gitosis ,因为authorized_keys文件大了很难管理。管理权限请参考下面

  五、Gitolite搭建教程

参考官网 https://git-scm.com/book/zh/v1/服务器上的-Git-Gitolite

  1、前期准备

git服务器[email protected],git admin机器[email protected]

[email protected]$ useradd git
[email protected]$ passwd git
[email protected]$ su - git

admin [email protected]
[email protected]$ useradd git
[email protected]$ passwd git
[email protected]$ su - git
[email protected]$ ssh-keygen -t -P ‘‘

send git.pub to [email protected]:322/home

  2、Admin使用

git clone

[email protected] git clone ssh://[email protected]:322/gitolite-admin

add user

1)获取用户的public ssh key,例如[email protected]
2)将`1`的pub存放到[email protected] /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)登陆[email protected],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、解决密码过期问题

[[email protected]_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.

解决命令

[[email protected]_10_16_4_14 ~]# chage -M 999 git
时间: 2024-10-09 16:08:32

centos上搭建git服务--4的相关文章

centos上搭建git服务--3

前言:当我们想要实现几个小伙伴合作开发同一个项目,或者建立一个资源分享平台的时候,GIT就是一个很好的选择.当然,既然是一个共有平台,那么把这个平台放到个人计算机上明显是不合适的,因此就要在服务器上搭建GIT了.另一个需求是,我们在本地开发,然后推送到服务器上,并且自动同步到web站点目录,这样就可以直接看到网页效果了,这就要实现自动同步.下面我带领大家实现这么一个功能. 如果条件允许的话,大家可以跟着做的(注:我的服务器是centos 7,lamp环境). 一.在服务器上安装git: //yu

Centos上搭建git服务

1.安装Git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git 接下来我们 创建一个git用户组和用户,用来运行git服务: $ groupadd git $ adduser git -g git 2.创建证书登录 收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/auth

如何在服务器上搭建git服务及上传本地代码

1. 在云服务器上搭建git服务 https://www.cnblogs.com/ucos/p/3924720.html 这篇文章已经详细的介绍了如何配置和安装 但是文章略微有点老 在配置环节稍微有点不一样 配置完 参照教程 就可以运行 2.创建远程库 3.添加用户 4.添加完用户后 该用户可以在本地clone该库 5.将代码复制到文件夹下 并提交推送 代码就上传到远程库里了 6.如何切出一个分支 在本地新建一个分支 然后推到服务端 点击分支可以在服务端删除掉远程分支 原文地址:https://

用Gogs在Windows上搭建Git服务

1.下载并安装Git,如有需求,请重启服务器让Path中的环境变量生效. 2.下载并安装Gogs,请注意,在Windows中部署时,请下载MiniWinService(mws)版本. 3.在MariaDB中创建一个命名为Gogs的数据库,并分配专用的管理账户. 4.在CMD中切换到解压目录,并输入gogs.exe web命令,回车就能看到提示运行成功,进入浏览器访问服务器127.0.0.1:3000端口即可访问. 需要注意的是,执行此步骤是为了完成Gogs的初始化工作,并创建配置文件,在将Gog

CentOS上安装GitBlit服务

简单介绍 在上一篇文章中,已经简单的介绍了如何在CentOS的服务器上搭建git服务器.但是这种方式实现的服务器功能比较弱,操作起来也比较繁琐.在网上搜索了一圈,感觉Gitblit比较符合我的需求.接下来我就简单地介绍下,如何在CentOS上搭建GitBlit服务吧. GitBlit是一款纯Java库实现用来管理.查看和处理Git资料库,相当于Git的Java管理工具.该管理软件支持Windows和Linux平台.可以有效的对项目.用户权限进行控制和管理.比较适合小型团队进行管理控制. 看上面的

服务器上的 Git - 在服务器上搭建 Git

http://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%90%AD%E5%BB%BA-Git 在服务器上搭建 Git 现在我们将讨论如何在你自己的服务器上搭建 Git 服务来运行这些协议. NOTE 这里我们将要演示在 Linux 服务器上进行一次基本且简化的安装所需的命令与步骤,当然在 Mac

Ubuntu上搭建Git服务器

下面我们就看看,如何在Ubuntu上搭建Git服务器.我们使用VMware虚拟机安装两台Ubantu系统,分别命名为gitServer和gitClient_01. 1.安装OpenSSH并配置SSH无密码登陆 通过命令 sudo apt-get install openssh-server,安装SSH服务. 通过命令 ps –e|grep ssh,查看ssh服务是否启动. 通过以上命令,我们为Ubantu系统安装SSH服务,并配置SSH无密码登陆,首先我们修改主机和ip配置文件:gedit /e

在Windows上搭建Git Server

Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用. 那么私有项目,如何用Git进行代码版本控制呢?我们可以自己构建Git服务器.一般来说,在Linux上搭建Git的教程比较多,但是如何在Windows Server平台下搭建Git服务器呢? 对于很多.NET用户来说,代码编写的工具是Visual Studio,该工具是不支持SSH协议的,通过搜索和对比,发现Gitblit可以很方便的搭建服务,他是用Jav

使用kubeadm在CentOS上搭建Kubernetes1.14.3集群

练习环境说明:参考1 参考2 主机名称 IP地址 部署软件 备注 M-kube12 192.168.10.12 master+etcd+docker+keepalived+haproxy master M-kube13 192.168.10.13 master+etcd+docker+keepalived+haproxy master M-kube14 192.168.10.14 master+etcd+docker+keepalived+haproxy master N-kube15 192.