码迷,mamicode.com
首页 > 其他好文 > 详细

git学习笔记

时间:2015-09-28 14:50:12      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:


github的简单使用
git config --global user.name "qiu"
git config --global user.email "xx@xx.com"
初始化
git init
添加文件
git add .
提交
git commit - m ‘提交的说明‘ 
生成ssh秘钥
ssh-keygen   会在 ~/.ssh/目录下生成 ,id_rsa私钥 ,id_rsa.pub公钥
github-->settings--> SSH-Keys 添加key(将公钥 id_rsa.pub内填入key中)
连接github
ssh -T git@github.com
将本地git仓库推送到gitHub上
git remote add origin git@github.com:用户名/项目.git
git push origin master

========================================

git的一些信息设置
git config --global user.name "xx"            
git config --global user.email "xx@xx.com"
git config --global color.ui auto 色彩设置
git config --global alias.co checkout  别名设置,本例中把 checkout 设置位co
git config --global core.quotepath off     windows下使用git bash  含非 ASCII 字符的文件名会显示为  "\346\226\260\350\246..." 。若设定如下,就可以让含非 ASCII 字符的文件名正确显示了。
别名:
git config --global alias.co checkout git config --global alias.ci commit git config --global alias.br branch 
git config --global alias.unstage ‘reset HEAD‘
git config --global alias.lg "log --color --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘ --abbrev-commit"
--global 正对当前用户,不加指对当前仓库起作用
仓库配置文件放在 .git/config
用户配置文件放在用户主目录下的 .gitconfig ,可以在配置文件中修改

 git init 初始化 会出现.git目录
.git目录是版本库(repository) 、当前项目目录工作区(working directory)
git add file    实际把文件添加到暂存区(index 或 stage)
git commit -m "" 把暂存区的所有内容提交到当前分支
git status 查看状态
git diff <file> 可以查看没有被add的,修改那些内容


git 版本回退
git log --pretty=oneline 单行查看那commit_id, 可以加上--graph
git reset --hard HEAD^  HEAD表示当前版本 HEAD^表示上一个版本  HEAD^^表示上上个版本  HEAD~100上100个版本
git reset --hard commit_id
git reflog 查看历史命令 (最后的保险)
git checkout -- file     撤销工作区的的修改或删除 ,如果已经添加到暂存区,先进 git reset HEAD file ,然后在进行上一步


远程仓库
ssh-keygen -t rsa -C “your@example.com”

git remote add origin git@github.cm:qiuhoude/xxx.git         远程仓库的名称叫origin ,也可以是其他的
git remote 查看远程库 git remote -v 更加详细
git remote remove <repository_name> 删除远程库的
git push  -u origin master    -u代表update
我们第一次推送master 分支时,加上了-u 参数,Git不但会把本地的master 分支内容推送的远程新的master 分支,还会把本地的master 分支和远程的master 分支关联起来,在以后的推送或者拉取时就可以简化命令
以后的推送命令可以使用  git push origin master
git pull    从远程仓库抓取
git branch --set--upstream dev origin/dev    和远程库的分支建立链接
git checkout -b dev origin/dev     创建本地分支和远程分支
 
验证是否连接  
ssh -T -o "VerifyHostKeyDNS yes"  git@github.com (正对github)
git clone xxx.git      克隆仓库到本地,支持https  和 ssh协议,但是ssh支持原生的git协议速度最快


分支管理
git 鼓励大量使用分支
git branch <name> 创建分支分支
git checkout -b <name>创建并切换分支
git branch     查看分支
git checkout <name>     切换分支
git merge <name>       合并某个分支到当前分支来
git branch -d <name>    删除分支
git branch -D <name>    强制删除分支
分支管理策略:
git 在合并分支时会默认使用Fast forward模式,此模式在删除分支后会丢掉分支信息
所以在合并分支时 使用 --no--ff
git merge --no--ff -m ‘<commit_message>‘  <branch_name>

分支策略: 

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:


bug分支:
git stash     可以储存当前状态, 如果是新建文件需要add到暂存区才能进行stash
git stash list   查看当前状态列表
git stash apply stash@{0}     回复指定的状态,但不删除stash的内容
git stash drop     删除stash内容
git stash pop     回复并删除stash

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

 修改完master分支bug ,要更新到当前分支,可以先把master分支merge到当先分支,如果有冲突先解决冲突然后,在把dev分支merge到master上


标签管理
    发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
    Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

git tag v1.0     创建一个表现,默认标签是打在最新提交的commit上
git tag <tag_name> commit_id 如果要打在之前的commit上,可以在后面加上commit_id
git tag -a <tag_name> -m ‘<tag_message>‘ commit_id     添加带注解标签,-a指定标签名,-m指定说明文字
git tag -s <tag_name> -m ‘<tag_message>‘ commit_id        -s表示私钥标签 , 签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错

git tag         查看标签列表,可以加上-n 显示标签的注解
git show <tag_name>    查看标签内容

git tag -d <tag_name>     删除标签,如果要删除远程仓库标签,先要删除本地标签,然后 git push origin :refs/tags/<tag_name>

git push origin <tag_name>    推送tag到远程仓库
git push origin --tags    推送所以tag到远程仓库

git的忽略文件
在项目根目录下创建  .gitignore 文件,并提交到git中,所以的ignore文件  https://github.com/github/gitignore


创建git服务器
1 安装git       sudo apt-get install git
2 添加git用户用于运行git      sudo adduser git
3 创建证书,先切换到 git用户下  su git --> ssh-keygen -t ras -C ‘<email_adress>‘ --> 创建 /home/git/.ssh/authorize_key文件,并加入需要登陆的公钥,一行一个。
4 初始化git仓库     sudo git init --bare /srv/<repository>.git (git仓库一般是.git结尾)
5 修改仓库的owner      sudo chown -R git:git /srv/<repository>.git  
6 禁用shell登陆        在/etc/passwd  中找到
git:x:1001:1001:,,,:/home/git:/bin/bash
改成
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
高级的公钥管理可以使用gitosis  https://github.com/res0nat0r/gitosis
高级的权限管理 gitolite  https://github.com/sitaramc/gitolite






git学习笔记

标签:

原文地址:http://my.oschina.net/qiuhoude/blog/511896

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!