Github一知半解

1.理解什么是github

Github是分布式管理工具,每个人电脑都有一份完整的版本库,所以修改可以在本地进行,不必联网。Github有一个充当中央服务器的电脑,用于伙伴们对一个项目交换修改,如果没有中央服务器,就只能在同事之间的两台个人电脑之间交换修改。

2.安装git(windows)

Git最初是运行在linux和unix平台上的,所以要在windows上运行必须模拟linux和unix环境。Cygwin译为小型的UNIX模拟环境,牛人将模拟环境和Git打包生成msysgit(windows版的git)。https://git-for-windows.github.io=>按默认选项安装即可。
注意:分布式管理器需要自报家门:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

3.本地仓库与远程仓库进行连接SSH密钥认证机制

在个人电脑上生成密钥对,id_rsa(私钥)和id_rsa.pub(公钥存储在github远程端)。原理是,个人电脑发出请求(如登录),远程托管服务器收到请求并在宿主目录下寻找公钥,检测是否合法,合法就加密一随机数,发送给客户端,客户端用私钥进行解密再发送回服务器,服务器经过比较便可完成认证。
生成密钥对:
$ ssh-keygen -t rsa -C "youremail@example.com"
一路回车,其中,-t 指定ssh类型,-C添加一个新注释,最后将id_rsa.pub的内容copy到github服务器上.

4.本地仓库如何与远程仓库同步

  • 第一种情况:本地仓库和远程仓库都已经建好,只需要关联一下就行
  • 第二种情况:远程仓库已经建好,本地仓库还没有,只需要克隆至本地就行

如何建立本地仓库:
1. 选择一个合适的地方,创建一个空目,进入目录,显示当前目录
$ mkdir gitStudy
$ cd gitStudy
$ pwd
2. 通过git init命令把这个目录变成Git可以管理的仓库,成功后会有.git隐藏目录,可以查看隐藏文件
$ git init
$ ls -ah

如何建立远程仓库:
1. 进入github官网,登录new一个repository就ok,最好远程和本地名字一致
关联两者:
$ git remote add origin git@github.com:kingbosser/gitStudy.git
克隆仓库:
$ git clone git@github.com:kingbosser/webTools.git
默认情况下只会克隆远程库的master分支,如果要克隆dev或其他分支至本地
$ git checkout -b dev origin/dev

5.如何管理自己的本地仓库

为了理解,我们将本地仓库管理过程比喻为你家承包了几百亩地,种植 不同的水果,终于到了丰收的季节,父亲联系了一位批发商来取货。一辆大货车停在路边,便开始采摘水果了,每个人一个背篓进入果场采摘,装满了便出林卸在货车上,货车装满,便运往公司。

本地仓库管理也如此,在地里(工作区)每一次摘了一个水果放进背篓(暂存区)代表一次git add操作,装满后卸在货车上(master分支,可以有很多分支)代表一次git commit操作,货车装满后运往公司(origin master)代表一次git push操作。整个流程就算完毕。接下来介绍仓库管理常规操作

  1. $ git status //查看版本库状态,有无修改
  2. $ git diff //查看具体修改细节
  3. $ git add //提交至暂存区
  4. $ git commit -m “注释文字” //提交至本地分支
  5. $ git log //查看提交日志
  6. 时光机

    • 返回到以前版本

    HEAD代表最新版本,HEAD^代表上一个版本,HEAD^^代表上上个版本,HEAD~100代表上第100个版本。
    $ git reset --hard HEAD^//回到上一个版本
    $ git reset --hard 3782132//回到指定版本,3782132代表版本commit id前几位

    • 穿梭到未来版本

    穿梭到未来版本必须通过版本号,版本号不易记住,可以查看版本号
    $ git relog//查看每一次commit操作id
    $ git reset --hard 127182//跳转到未来的指定版本

  7. 撤销修改分为三种情况

    • 丢弃工作区的修改

    $ git checkout -- filename //撤销工作区的全部修改,如果没有add至暂存区,则回来版本库原样,如果已经add至暂存区,则回到暂存区的状态。

    • 丢弃暂存区的修改

    $ git reset HEAD filename //撤销暂存区的所有修改,回到工作区状态

    • 丢弃分支的修改

    使用版本回退

  8. 删除文件

    手动删除或这使用命令
    $ rm filename
    确实要删:$ git rm file name
    犯傻误删:$ git checkout -- filename

6.分支管理

  1. 创建新分支

$ git branch dev//创建dev分支
$ git checkout -b dev//创建并切换到dev分支
$ git branch//查看所有分支,带*的为当前分支
$ git checkout dev//切换到dev分支
$ git merge dev//合并dev分支到master分支
$ git branch -d dev//删除dev分支
$ git branch -D dev//强行删除dev分支

  1. 冲突管理

当合并分支时,如果提示有冲突,则需手动清除冲突,然后再add+commit,最后删除dev分支。合并分支默认以Fast-forward形式,这种形式下删除分支会丢掉分支信息,看不出之前做过合并;若禁用Fast-forward形式,会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
$ git merge --no-ff- -m "注释性文字" dev//禁用Fast-forward
$ git log --graph (--pretty=oneline --abbrev-commit)//查看合并分支图

最佳实践:master是最稳定的,只有发布稳定版本的时候才更新。工作统一在dev分支上,每个人有自己的个人分支
  1. 现场保存和恢复

$ git stash//保存现场
$ git stash list//查看现场保存目录列表
$ git stash apply//恢复现场,stash内容不删除
$ git stash drop//删除stash内容
$ git stash pop//恢复现场并删除stash内容

  1. 多人协作

$ git remote//查看远程库信息
$ git remote -v//查看远程库详细信息
本地新建的分支如果不推送到远程,对其他人就是不可见的;
$ git push origin branch-name//从本地推送分支
如果推送失败,先用git pull抓取远程的新提交;
$ git pull//抓取远程新提交
$ git checkout -b branch-name origin/branch-name//在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致;
$ git branch --set-upstream branch-name origin/branch-name//建立本地分支和远程分支的关联.从远程抓取分支,使用git pull,如果有冲突,要先处理冲突

7.标签管理

标签(tag)是一个版本的快照,虽然说存在commit id,但是很难记,tag是一个有意义的名字,方便记忆,与commit绑定在一起,tag是静态的,不能移动,commit可以移动。

  1. 创建标签
    $ git tag v1.0//切换到目的分支上,默认为最新commit打标签
    $ git tag//查看所有标签
    $ git tag v1.0 commit-id//给指定commit打标签
    $ git show v1.0//查看指定tag信息
    $ git tag -a v0.1 -m "说明性文字" commit-id//添加带说明的标签
    $ git tag -s <tagname> -m "说明性文字"//PGP签名标签名,tag采用PGP签名,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错。
  2. 推送和删除标签
    $ git push origin v1.0//推送标签、
    $ git push origin --tags//一次性推送所有标签
    $ git tag -d <tagname>//删除本地标签
    $ git push origin :refs/tags/<tagname>//删除远程标签

8.参与开源项目

访问开源项目点“Fork”在自己的账号下克隆了一个仓库,然后从自己的账号下clone。如果修复项目的一个bug,或者新增一个功能,立刻就可以开始干活,干完后,往自己的仓库推送。如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。

9.更多配置

  1. 忽略文件

    编写.gitignore文件,在这里都有https://github.com/github/gitignore
    如果想提交被忽略的文件,可以强制提交或者查看.gitignore文件明细
    git add -f filename//强制提交文件
    git check-ignore -v filename//查看文件在何处被忽略

  2. 配置别名
    $ git config --global alias.st status//st代表status
    $ git config --global alias.co checkout//co代表checkout
    $ git config --global alias.ci commit//ci代表commit
    $ git config --global alias.br branch//br代表branch
    $ git config --global alias.unstage 'reset HEAD'//unstage代表reset HEAD
    $ git config --global alias.last 'log -1'//last代表log -1最新提交

    查看配置文件:每个仓库的Git配置文件都放在.git/config文件中,别名就在[alias]后面,要删除别名,直接把对应的行删掉即可
    cat .git/config

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Github下载地址:https://github.com/XLAccount/MiaoBo 项目详解地址:http://www.code4app.com/blog-843201-350.html 快速集成RTMP的视频推流教程:http://www.code4app.com/blog-843201-315.html ffmpeg常用命令操作:http://www.code4app.com/blog-843201-326.html #关于IJKMediaFramework/IJKMediaFramework.h找不到的问题,下载后直接拉到项目中即可 下载地址:https://pan.baidu.com/s/1boPOomN 密码::9yd8 #BUG修复: 解决登录程序偶尔崩溃,修复轮播图片和页面控制器叠加等问题,修复新浪授权登录 (2016.9.7) 解决程序运行中偶尔崩溃问题,解决连续下拉刷新崩溃问题,优化代码 (2016.9.8) 优化直播页面,减少不必要的性能消耗,增加用户体验 (2016.9.11) 适配5s以上的机型除了6sPlus和6Plus延迟较大外,其余延迟都较小,网速好的话可以忽略不计 (2016.9.12) 新版本极大优化程序性能,修复关注数据异常等小问题,重新布局热门页面,减少因反复加载带来的性能消耗 (2016.9.13) 增加个人中心页面,采用下拉放大图片 ➕ 波纹效果 (2016.9.14) ![image text](https://github.com/XLAccount/ALLGIFS/blob/master/psb.gif) 展示图片 ![image](https://github.com/XLAccount/ALLGIFS/blob/master/psb-1.gif) 展示图片 ![image text](https://github.com/XLAccount/ALLGIFS/blob/master/psb-2.gif) 展示图片 ![image text](https://github.com/XLAccount/ALLGIFS/blob/master/psb-3.gif) 展示图片 感谢大神Monkey_ALin http://www.jianshu.com/users/9723687edfb5/latest_articles 的demo支持

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值