zoukankan      html  css  js  c++  java
  • git学习

    教程参见:www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    (1)什么是git?

    最先进的布式的版本控制系统,目前十分流行

    github便是利用的git原理的一个版本控制托管网站

    (2)安装,设置

    在linux下默认安装,用git --version可以查看到版本信息的话,说明已经安装,否则就用linux下常用的安装命令 sudo apt-get install git

    设置:

    git config --global user.name "your name"

    git config --global user.email "your email"

    (--global 参数表示机器上所有的repo都用这个配置,此外还有--system ,--local等参数可以用来配置)

    查看git配置信息: git config --list

    (3) 创建git库

    在本地新建一个文件夹,如我建了个叫'gitstudy'的文件夹, 命令git init 使之成为git库(用ll看可以看到 .git的文件夹,用来跟踪管理版本库)

    (4)本地文件创建,修改,提交等操作

    git在本地分为三个区:working area(工作区), stage area(暂存区), master(本地版本库)

     在git库的目录下,如我的~/gitstudy下

    新建一个文件(任意),如readme.txt将该文件提交到本地库的方法:

    1. git add readme.txt (readme.txt的改动提交到stage区域)
    2. git comit -m 'message'(将stage区域的commit到本地的master上)

    注释:

    • git status可以查看修改的文件的情况,通常会有如下几种提示 [在ubuntu的terminal下,红色字符提示表示还没有被git add到暂存区,绿色表示还没有被commit到本地版本库)
      • nothing to commit, working directory clean (说明工作区和暂存区都没有内容)
      • untracked files: 文件名 (说明这个新建的文件还没有被git add到暂存区)
      • changes to be committed (说明该文件在暂存区,还没有被commit到本地版本库)
    • 撤销工作区的修改的方法(即只是修改了,还没有git add到暂存区): git checkout -- 文件名   ['--'很重要,不可省,否则创建新的分支]
    • 撤销暂存区的修改的方法(即已经被git add,但还没有commit): git reset HEAD [实际上就是用本地版本库的最新内容去替换工作区的,即恢复修改前的样子]
    • 改变版本库的当前版本,版本库有个叫HEAD的指针,指向当前的版本,HEAD^表示上一个commit的版本,HEAD^^表示上上个
      • git reset --hard HEAD^ (切换到上一个版本,此时若用git log去查看,会发现最新的一次commit就是上一个版本的,即穿梭到上一个版本的时光,好像之后的一切改变都没有了)
      • git reset --hard 版本hash号 (每次commit会生成一个很长的十六进制的hash值,是这次commit的代号, 通常只需要打出前六位即可,切到该版本)
      • 查看历史版本commit和reset的记录的命令:git reflog (非常好用的命令,切换到旧版本后就不用担心找不到新版本的commit id了)

    (5) github的连接

    本地版本库连接github可以通过两种协议,一种https,一种ssh,其中ssh (secure shell) 更安全,https明文传送.

    使用ssh需要配置ssh key

    1. ssh key在 ~/.ssh下, 我的ls如下: config  config~  id_rsa  id_rsa.pub  known_hosts  [注:config是个很重要的文件,在进行和各种需要ssh key验证的网站连接时,需要在config中对其进行配置]
      存在id_rsa(密钥),id_rsa.pub(公钥)说明已经存在ssh key,不需要进行第二步生成ssh key
    2. ssh-keygen -t rsa -C "邮箱" -f ~/.ssh/csser-github

      简单介绍下参数含义:

      -t 指定密钥类型,默认即 rsa ,可以省略
      -C 设置注释文字,比如你的邮箱
      -f 指定密钥文件存储文件名,会生成 csser-github 和 csser-github.pub 两个密钥文件 (缺省为id_rsa)回车后,遇到提示输入 yes 即可,剩下一路回车,密钥文件就在指定路径下生成了
    3. 登录github,在账户设置->ssh keys处,将id_rsa.pub(也可以是自己命名的csser-github.pub)内容粘贴到新建key的内容框内,新建一个key,名字自取
    4. 测试是否能够ssh连接上 ssh -T git@github.com 若不成功,则尝试去修改~/.ssh/config文件,改变port(网上说局域网端口22被拦截,改用443端口)

    (6)github的使用

        (4)中提到的操作都是对于本地库的操作。

    两种情况;

    A. 先有本地库,再关联远程库

    在github网站上新建一个远程库,如我建了一个叫gitls的repo

    在本地的repo目录下:

    git remote add origin git@github.com:miracle77/gitls.git

    然后讲本地库的内容推送到远程库

    git push -u origin master

    【由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。】

    注:在本地,git的分支名称默认为master,而在远程库,默认为origin 这句的意思就是推送给远程origin以本地master的内容

    以后每次提交本地内容到远程库,只需要git push origin master

    B. 先有远程库,再建本地库

  • 相关阅读:
    有价值的终会被人发现和承认
    Sql中存在斜杠“/”怎么办?
    JSONObject和JSONArray(json-lib-2.4)的基本用法
    如何设定linux系统时间
    动态创建的文本框想要加上jQuery的datepicker功能变成日期选择控件该怎么办?
    如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了
    Notepad2替代系统自带的记事本Notepad
    css属性与js中style对象的属性对应表
    day02_js学习笔记_01_js的简介、js的基本语法
    Eclipse/MyEclipse的快捷键以及文档注释、多行注释的快捷键
  • 原文地址:https://www.cnblogs.com/hanying/p/3791020.html
Copyright © 2011-2022 走看看