Git是目前世界上最早进的分布式版本控制系统(没有之一)。使用Svn的请参考《版本控制-svn服务器搭建和经常使用命令(centos 6.3)》,下面介绍Git的经常使用命令html
经常使用命令git
简单版github
升级版shell
其余vim
服务器搭建centos
本地服务器搭建缓存
一、建立版本库服务器
git init
二、新增修改,新增文件到缓存区
git add
三、比较文件的差别
git diff
四、查看仓库状态
git status
五、从缓存区提交修改(新增)到版本库
git commit -m 'add a.txt'
六、查看提交日志
git log (--pretty=oneline)
七、HEAD表示当前版本,HEAD^表示上个版本,HEAD^^上上个版本,HEAD~100表示网上100个版本
八、更新到指定版本(没有撤销本地修改)
git reset --hard HEAD^ git reset --hard 3628164 # 能区分一个版本的commit id便可
九、查看每一次命令
git reflog
十、撤销工做区的修改
git checkout --file
假设错误修改了readme.txt,而且git add到了缓存区
git reset HEAD readme.txt # 回到最新版本,撤销缓存区的修改
git checkout --readme.txt # 撤销本地修改
十一、删除文件
删除本地文件直接rm
删除版本库文件
git rm a.txt git commit -m‘rm a.txt’
删除暂存区文件
git rm --cache a.txt git checkout HEAD(a.txt) # 会清除工做区和暂存区的修改
一、从github添加远程仓库(origin是远程库默认名称,能够更改)
git remote add origin git@github.com:***/learngit.git
二、把本地的全部修改推送到远程库(push是用本地的master分支,-u是表示第一次将远程库的master和本地的master关联)
git push (-u) origin master
三、克隆一个仓库(支持ssh和https协议,ssh原生且最快)
git clone git@github.com:***/gitskills.git
四、建立一个分支并切换到该分支(git鼓励使用分支)
git checkout -b dev
等于两个命令
git branch dev
git checkout dev
五、分支命令
查看分支:git branch 建立分支:git branch <name> 切换分支:git checkout <name> 建立+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch –d(D) <name> 删除远程分支:git push origin :serverfix
六、查看分支合并状况日志
git log –graph
git log --graph --pretty=oneline --abbrev-commit
七、分支管理策略
master是稳定版本,开发的在其余分支上,稳定后合并到master。
合并分支时,加上--no-ff参数就能够用普通模式合并,合并后的历史有分支,能看出来曾经作过合并,而fast forward(默认)合并就看不出来曾经作过合并
git merge --no-ff -m "merge with no-ff" dev git log --graph --pretty=oneline --abbrev-commit
八、挂起工做场景
git stash # 挂起
git stash list # 查看
git stash pop # 恢复并删除
等于
git stash apply && git stash drop
九、多人协做
用下面命令推送本身的修改
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
十、标签操做
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
二、配置别名
git config --global alias.co checkout git config --global alias.ci commit git config --global alias.br branch
每一个仓库的Git配置文件都放在.git/config文件中
详情可参考廖雪峰官方网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
一、安装git
yum install git -y [root@master git]# git version git version 1.7.1
二、新建git帐号
[root@master git]# useradd git [root@master git]# passwd git [root@master git]# mkdir /data1/git
三、生成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 600 authorized_keys
收集全部须要登陆的用户的公钥,就是他们本身的id_rsa.pub
文件,把全部公钥导入到/home/git/.ssh/authorized_keys
文件里,一行一个。
四、初始化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/
五、禁用shell登录
处于安全考虑通常禁用git帐户被远程登录shell。修改/etc/passwd
[root@master git]# vim /etc/passwd 将 git:x:502:502::/home/git:/bin/bash 修改成 git:x:502:502::/home/git:/usr/bin/git-shell
[root@master git]# su - git fatal: What do you think I am? A shell?
六、其余地方克隆仓库
现将公钥添加到 authorized_keys文件中
git clone ssh://git@master:322/data1/git/project.git
管理公钥可使用 Gitosis ,由于authorized_keys文件大了很难管理。管理权限请参考下面
参考官网 https://git-scm.com/book/zh/v1/服务器上的-Git-Gitolite
一、前期准备
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
二、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`中的仓库
三、权限控制
参考 https://git-scm.com/book/zh/v1/服务器上的-Git-Gitolite
参考 http://perthcharles.github.io/2015/08/24/setup-gitolite-service-git-1
四、解决密码过时问题
[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 999 git
原创文章,转载请备注原文地址 http://www.cnblogs.com/lxmhhy/p/6038243.html