版本控制-Git服务器搭建和常用命令使用
Git是目前世界上最先进的分布式版本控制系统(没有之一)。使用Svn的请参考《版本控制-svn服务器搭建和常用命令(centos 6.3)》,下面介绍Git的常用命令
常用命令
服务器搭建
一、简单版
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 # 能区分一个版本的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、分支命令
查看分支: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 [root@master git]# git version
git version 1.7.
2、新建git账号
[root@master git]# useradd git [root@master git]# passwd git [root@master git]# mkdir /data1/git
3、生成ssh key
[root@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 authorized_keys
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
4、初始化git仓库
切回Root账户 [root@master ~]# cd /data1/git/ [root@master git]# git init --bare project.git
Initialized empty Git repository in /data1/git/project.git/ [root@master git]# chown -R git: /data1/git/
5、禁用shell登陆
处于安全考虑一般禁用git账户被远程登陆shell。修改/etc/passwd
[root@master git]# vim /etc/passwd 将 git:x::::/home/git:/bin/bash 修改为
git:x::::/home/git:/usr/bin/git-shell
[root@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.
解决命令
[root@Dev_10_16_4_14 ~]# chage -M git
原创文章,转载请备注原文地址 http://www.cnblogs.com/lxmhhy/p/6038243.html
版本控制-Git服务器搭建和常用命令使用的更多相关文章
- 版本控制-svn服务器搭建和常用命令(centos 6.3)
Svn是比较优秀的版本控制工具,虽然功能和性能上无法和Git媲美,但由于其容易搭建和使用的特性,所以在各个小公司还是很受欢迎的.使用Git可参考<版本控制-Git服务器搭建和常用命令使用> ...
- 版本控制-https svn服务器搭建和常用命令(centos 6.3)
Svn是比较优秀的版本控制工具,虽然功能和性能上无法和Git媲美,但由于其容易搭建和使用的特性,所以在各个小公司还是很受欢迎的.使用Git可参考<版本控制-Git服务器搭建和常用命令使用> ...
- Windows下Git服务器搭建[转]
Windows下Git服务器搭建 作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 ...
- ECS之Git服务器搭建
最简教程 ### . 安装Git 安装Git服务,命令如下: ```Shell $ yum install curl-devel expat-devel gettext-devel openssl-d ...
- Ubuntu中Git服务器搭建
git服务器搭建过程 参考网上资料搭建git服务器过程记录 如下: 需求 硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到. 软件需求:git-core, gitosis, ...
- 基于阿里云服务器的git服务器搭建
使用阿里云Ubuntu 12.0.4 64位操作系统做git服务器. 首先git服务器有两种访问方式可以选择:http方式和ssh的方式,http方式更容易使用. 1.http方式的git服务器搭建以 ...
- 【转】Windows平台下Git服务器搭建
Windows平台下Git服务器搭建 Posted on 2015-05-18 21:29 阿祥当码农 阅读(7637) 评论(0) 编辑 收藏 该文章转自:http://www.codeceo.co ...
- Git系列(1) Windows下Git服务器搭建
作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 我们这里只需要两个软件git和ssh, ...
- Git-Runoob:Git 服务器搭建
ylbtech-Git-Runoob:Git 服务器搭建 1.返回顶部 1. Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看 ...
随机推荐
- dom 操作
1.dom 的查找 (1)根据id 查找 var object = document.getElementById("id 值"): (2)根据 name 查找:返回 dom 对象 ...
- 给 Android 研发的一些的建议
作为应用程序开发人员,我们需要注意在开发应用程序时的一些问题. 这些问题的安全级别是取决于应用程序的类型和使用域. 在这里列举了一些我们在开发中需要注意的一些问题: 开发日志输出相关: 1. 不要在 ...
- WCF学习之旅—WCF中传统的异常处理(十六)
WCF中的异常处理 在软件开发过程中,不可能没有异常的出现,所以在开发过程中,对不可预知的异常进行解决时,异常处理显得尤为重要.对于一般的.NET系统来说,我们简单地借助try/catch可以很容易地 ...
- 我为NET狂~群福利:逆天书库
我为NET狂-官方群① 238575862 爱学习,爱研究,福利不断,技能直彪~~ 最近更新:2016-08-30,欢迎补充 暂缺PDF: │ SQL Server 2012 Analysis Ser ...
- 5.如何使主机和虚拟机IP处于同一网段(内网渗透专用)
先说一下正常流程: 1.打开虚拟机网络设置选项,选择桥接模式(Bridged)[如果是Kali 2.0的话,执行第一步后就OK了(90%)] 2.打开Kali里面的网络设置 3.设置一个ip4或者ip ...
- JavaScript权威设计--JavaScript对象(简要学习笔记七)
1.with语句 语法: width(object){ statement } with语句可用于临时扩展作用域链.作用域链可以按序检索的对象列表,通过它可以进行变量名解析. with将object添 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(15)-权限管理系统准备
系列目录 这节我们说下权限系统的特点,本系统采用的是MVC4+EF5+IOC 接口编程的架构,其中的权限树用的是DWTree,功能上做到灵活,授权操控细致,权限可以细到按钮级别 ,为了部署简单,导致设 ...
- 网站文件系统发展&&分布式文件系统fastDFS
网站文件系统发展 1.单机时代的图片服务器架构 初创时期由于时间紧迫,开发人员水平也很有限等原因.所以通常就直接在website文件所在的目录下,建立1个upload子目录,用于保存用户上传的图片文件 ...
- Django models对象的select_related方法(减少查询次数)
表结构 先创建一个新的app python manage.py startapp test01 在settings.py注册一下app INSTALLED_APPS = ( 'django.contr ...
- Java进击C#——语法之IO操作
本章简言 上一章我们对线程同步进行讲解.了解如何去处理可能发生的脏数据.而本章就要讲有关于C#在读取IO文件的时候,常常用到的操作类.这一章的内容会比较少.但是笔者还是总结出来让读者们有一个学习的方向 ...