今天拜读雪峰老师git教程作一些总结git
Git 使用命令shell
//初始化仓库
git initvim
//设置用户名密码
git config --global user.name "Your Name"
git config --global user.email "you@example.com"bash
//添加文件到git仓库 可反复使用添加多个文件
git add <file>服务器
//提交文件
git commit -m "备注"app
//以彩色显示改动状态
git config [--global] color.ui truessh
//查看工做区状态
git status 工具
//查看文件哪些内容被修改过
git diffui
//查看提交历史记录 参数[pretty=oneline] 简化显示信息
git log [ pretty=oneline]加密
//回溯到哪一个版本 HEAD 指当前版本;HEAD^ 指上一版本;HEAD^^上上版本 HEAD~100 上100个版本。。。
git reset --hard commit_id
//重回将来的哪一个版本,查看命令历史,以便确认将来版本号commit_id
git reflog
//丢弃工做区修改时
git checkout -- <file>
//已提交到暂存区stages 想丢弃修改
git reset HEAD <file>
git checkout -- <file>
//删除版本库中的文件
git rm <file>
//从版本库还原到工做区的版本 "一键还原"
git checkout -- <file>
//建立SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
//关联一个远程仓库 xx.git 远程仓库地址
git remote add origin xx.git
//第一次推送master分支的全部内容
git push -u origin master
//要克隆一个仓库,首先必须知道仓库的地址,而后使用git clone命令克隆。 Git支持多种协议,包括https,但经过ssh支持的原生git协议速度最快。
git clone xx.git
//查看分支
git branch
//建立分支
git branch <name>
//切换分支
git checkout <name>
//建立+切换分支
git checkout -b <name>
//合并某分支到当前分支
git merge <name>
//删除分支
git branch -d <name>
//查看分支合并图
git log --graph
//强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就能够看出分支信息。
git merge --no-ff -m "备注" dev/*分支*/
//当手头工做没有完成时,先把工做现场git stash一下,而后去修复bug,修复后,再git stash pop,回到工做现场。
git stash //把手头工做储藏起来,干完别的活后
git stash pop //回到手头工做/*快捷键== git stash apply stash_id + git stash drop stash_id*/
//查看stash列表
git stash list
//强制删除一个分支<name> 注意:当前位置不能在被删除的分支上
git branch -D <name>
//查看远程库信息
git remote -v
//抓取远程更新
git pull origin branch-name
//本地推送分支
git push origin branch-name
//在本地建立和远程分支对应分支, 本地和远程分支最好是同样
git checkout -b branch-name origin/branch-name
//创建本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name
//建立一个新标签 默认为HEAD
git tag <name> [commit_id]
//查看全部标签
git tag
//查看标签信息
git show <tagname>
//建立带有说明的标签 -a 制定标签名 -m 指定说明文字
git tag -a 版本号(v1.0) -m "备注" commit_id
//能够经过 -s 用私钥签名一个标签 私钥须要安装gpg加密工具并生成gpg私钥
git tag -s 版本号 -m "备注" commit_id
//推送一个本地标签
git push origin <tagname>
//推送所有为推送过的本地标签
git push origin --tags
//删除一个本地标签
git tag -d <tagname>
//删除一个远程标签
git push origin :refs/tags/<tagname>
//忽略提交的文件
! 在与.git同级的根目录下建立.gitignore文件,vim .gitignore 编辑你要忽略的文件。如 *.db,Desktop.ini 等
//配置别名
git config [--global] alias. 简写命令<如st> 命令/"" <如status/"reset HEAD">
搭建Git服务器
1,必须以roo身份
yum install git
adduser git
passwd git
2,切换用户git, 建立仓库
su git
选定一个目录做为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令
$ sudo git init --bare sample.git
$ sudo chown -R git:git sample.git
3,建立证书登陆, 把项目组全部人的公钥都收集
scp 项目组本地公钥路径/id_rsa.pub git@192.168.0.188(仓库路径)
4,把全部人的公钥都写入到/home/git/.ssh/authorized_keys文件里,一行一个
cat id_rsa.pub<1> id_rsa.pub<2> ... >> .ssh/authorized_keys文件里,一行一个
5,禁shell登陆
权限用户root
vim /etc/passwd
把git:x:1001:1001:,,,:/home/git:/bin/bash
改成
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
6, 克隆远程仓库 server-->192.168.0.188<ip地址>
$ git clone git@server:/srv/sample.git
方便管理公钥, 用Gitosis
配置Git时,加上 --global 对当前用户起做用, 不加对当前仓库起做用
每一个仓库的Git配置文件都放在.git/config文件中
别名就在[alias]后面,要删除别名,直接把对应的行删掉便可
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中