博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git学习笔记
阅读量:5940 次
发布时间:2019-06-19

本文共 4417 字,大约阅读时间需要 14 分钟。

hot3.png

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上
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"   (正对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文件 
创建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 
高级的权限管理 gitolite 

转载于:https://my.oschina.net/qiuhoude/blog/511896

你可能感兴趣的文章
Hadoop_12_Hadoop 中的RPC框架演示
查看>>
Integrate Neutron and OVN
查看>>
国家要把网络升级到IPv6,会对我们普通人有什么影响?
查看>>
【HDOJ】4737 A Bit Fun
查看>>
spring学习之一概念
查看>>
mogilefs-php扩展的安装配置
查看>>
分享云及人工智能的一些学习资源和学习心得
查看>>
我的服务器中毒了
查看>>
Java基础-进制转换
查看>>
C#编程(十五)----------只读字段
查看>>
深度解读 - Windows 7核心图形架构细致分析(来自微软)
查看>>
微软软件开发技术二十年回顾-API篇(转)
查看>>
多行文本溢出显示省略号
查看>>
[Android Pro] http请求中传输base64出现加号变空格的解决办法
查看>>
Simpson公式的应用(HDU 1724/ HDU 1071)
查看>>
逆波兰表达式
查看>>
[BeiJing2006]狼抓兔子
查看>>
[SDOI2011]染色
查看>>
单页应用和多页应用
查看>>
jsp 页面导出excel时字符串数字变成科学计数法的解决方法
查看>>