• git & github 菜鸟笔记


    1、概念:
    最先进的分布式版本控制系统
    文件修改该提交的内容:---版本 文件名 用户 说明 日期
    GitHub网站上线了,它为开源项目免费提供Git存储
    --CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统
    集中:代码在中央服务器上,获取最新,编辑,上传;互联网网速可能慢;
    分布:没有“中央服务器”,每人有完整的版本库,有一台充当“中央服务器”的电脑,作用仅仅是用来“交换”修改。

    2、安装:
    Linux上安装Git
    测试:$ git
    The program 'git' is currently not installed. You can install it by typing:
    sudo apt-get install git
    直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了。

    Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像)
    安装完成后,在开始菜单里找到“Git”->“Git Bash”;

    安装完成后,还需要最后一步设置,在命令行输入:
    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"

    3、版本库
    仓库,repository;简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
    mkdir mygit 创建目录;
    pwd 显示当前目录;
    git init命令把这个目录变成Git可以管理的仓库
    --目录默认是隐藏的,用ls -ah命令就可以看见。
    把文件添加到版本库
    --只能跟踪文本文件的改动 (Word格式是二进制格式)
    文件放在仓库目录或子目录下,
    $ git add readme.txt 把文件添加到仓库
    $ git commit -m "wrote a readme file" 把文件提交到仓库
    -- -m后面输入的是本次提交的说明,从历史记录里方便地找到改动记录。
    -- 1 file changed:1个文件被改动(我们新添加的readme.txt文件);2 insertions:插入了两行内容(readme.txt有两行内容)。
    可以add多个文件,一次commit;
    $ git add file1.txt
    $ git add file2.txt file3.txt
    $ git commit -m "add 3 files."

    4、修改 回退
    git status命令可以让我们时刻掌握仓库当前的状态
    git diff 看看具体修改了什么内容 ,查看difference
    快照在Git中被称为commit;
    git log 历史记录
    --pretty=oneline参数:
    commit id(版本号)
    HEAD表示当前版本
    HEAD^,上上一个版本就是HEAD^^ ,HEAD~100;
    $ git reset --hard HEAD^ 退回上个版本
    cat 查看;
    $ git reset --hard 1094a 指定回到特定 id 的某个版本;
    Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL:改为指向add distributed:
    git reflog用来记录你的每一次命令;

    5、工作区、暂存区
    工作区(Working Directory)
    版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
    Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

    第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
    第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
    Untracked files:从来没有被添加过

    6、管理修改
    Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

    1.git diff commit_id_1 commit_id_2
    用来比较2个commit之间区别

    2.git diff
    检查的是工作区与暂存区的差异【没add之前】

    3.git diff --staged
    暂存与仓库的差异【add之后,commit之前】

    4 git diff HEAD 工作区 与 版本库

    -----------------------版本库--------------------------------------------
    | |
    git diff --cached |
    | |
    -------------暂存区---------------------- git diff HEAD
    | |
    git diff |
    | |
    -----工作区--------------------------------------------------------------

    7、撤销修改
    git checkout -- file可以丢弃工作区的修改:
    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
    总之,就是让这个文件回到最近一次git commit或git add时的状态。
    git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:

    8、删除文件
    rm命令删本地,
    git add/rm 把本地的删除 放到缓存区;
    git commit -m "..." 执行缓存区内容;
    --git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    9、远程仓库
    GitHub,提供Git仓库托管服务,本地Git仓库和GitHub仓库之间的传输是通过SSH加密的。
    第1步:创建SSH Key; 打开Shell(Windows下打开Git Bash),
    $ ssh-keygen -t rsa -C "youremail@example.com"
    在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件;
    第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
    GitHub允许你添加多个Key。免费托管的Git仓库,任何人都可以看到;

    添加远程库
    本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,。
    找到“Create a new repo”按钮,创建一个新的仓库:
    接着有3种选择: 1新建本地库,关联到github, 2已有本地库关联,3从别人那关联
    关联一个远程库: git remote add origin https://github.com/oscarDacude/xx.git
    推送master分支: git push -u origin master
    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    提示出错信息:fatal: remote origin already exists.
    --删除 $ git remote rm origin

    克隆 $ git clone https://github.com/oscarDacude/hellogit.git

    GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

    使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

    10、分支管理
    你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

    Git鼓励大量使用分支:
    查看分支:git branch
    创建分支:git branch <name>
    切换分支:git checkout <name>
    创建+切换分支:git checkout -b <name>
    合并某分支到当前分支:git merge <name>
    删除分支:git branch -d <name>

    每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。
    主分支,即master,HEAD严格来说不是指向提交,而是指向master,HEAD指向的就是当前分支。
    创建新的分支,例如dev时,Git新建了一个指针叫dev,
    删除dev分支就是把dev指针给删掉,
    --Fast-forward信息,这次合并是“快进模式”

  • 相关阅读:
    centos6.5 升级安装pcre 8.39版本
    解决MongoDB磁盘IO问题的三种方法
    javascript 利用匿名函数对象给你异步回调方法传参数
    spring mvc fastJson 自定义类型转换(返回数据) 实现对ObjectId类型转换
    Java BigDecimal 加减乘除运算
    OKHTTP 3.0
    Chrome 开发者工具中的命令菜单
    vuex 基础:教程和说明
    RxJS 简介:可观察对象、观察者与操作符
    CreateJs入门必知必会
  • 原文地址:https://www.cnblogs.com/dacude/p/10045981.html
Copyright © 2020-2023  润新知