body, table{font-family: 微软雅黑; font-size: 13.5pt}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}

sudo apt-get install git       安装

//设置,都是GitHub的用户名和注册邮箱

git config --global user.name "Your Name"
git config --global user.email "email@example.com"


//创建版本库
git init
//文件添加到版本库
git add filename
//把文件提交到仓库
git commit -m "wrote a readme file"      //冒号里的信息只是自己加的提示信息,不会放到文件里;最后一段字符,你输入的是什么,放进去就是什么。

//查看文件状态,是否被修改
git status
//查看文件被改了什么
git diff    //只能查看工作区的修改情况,要查看工作区文件和加入到暂存取的修改的不同之处用git diff HEAD -- readme.txt

//查看文件修改日志记录
git log    
//日志记录文件一行显示
git log --pretty=oneline    //显示的最开头的字符串就是commit id,id记录前面7个就够了
//版本回退(回退是从分支master放到stage)
git reset --hard HEAD^      //一个^表示上一个版本,^^上两个版本,多个可以HEAD~100(上100个版本)
git reset --hard 17fc687878b872dbe0957609f96a35337bf28f8d    //不需要这么长,只要前面7个数字就可以了
git reset HEAD readme.txt
//查看历史命令
git reflog

在一个目录下,使用git init命令把当前目录初始化,他会在这个目录下新建一个隐藏的.git文件
git版本控制库分两个部分,一个是工作区(Working Directory),比如我们现在初始化的目录下就是
                     一个是版本库(Repository)
Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

git diff HEAD -- readme.txt 命令可以查看工作区和版本库里面最新版本的区别


//撤销修改,丢弃工作区的修改
git checkout -- file     //git checkout 就是用版本库里的版本替换工作区的版本
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
git checkout -- filename
场景2当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
git reset HEAD filename
git checkout -- filename
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
git reset --hard "commit id"  (HEAD~前几次,用这个命令一次就恢复了)
git reset HEAD filename
git checkout -- filename

//从版本库中删除文件
git rm filename  
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。
添加远程库
已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:repo-name
git remote add origin git@github.com:meihao1203/learngit.git   //本地仓库与刚才新建的仓库关联
远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

如果在GitHub建立仓库的时候带上了README.md,push会失败,出现错误的主要原因是github中的README.md文件不在本地代码目录中,要执行下面这个命令
git pull --rebase origin master
git pull origin master   //我的windows电脑和Linux上都在往项目里push代码,这就造成了两个push的时候master分支不一致,这是后就要用这个命令进行分支合并,再push
//这个是直接用远程仓库的分支合并自己本地的,这样操作后本地就和远程一样,但是不安全
git fetch origin master   //首先从远程的origin的master主分支下载最新的版本到origin/master分支上
git log -p master origin/master   //比较本地的master分支和origin/master分支的差别
git merge origin/master   //合并

//推送
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push -u origin master    //现在github上的东西就和我们本地的一样了
git push origin master   //以后push只要这个命令

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
从远程库克隆
登陆GitHub,创建一个新的仓库,名字叫gitskills:
git clone git@github.com:meihao1203/gitskills.git
//从网页上下载
https://github.com/meihao1203/gitskills
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/meihao1203/gitskills.git
git push -u origin master

git重要命令的更多相关文章

  1. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  2. git常用命令

    开始的时候 git config --global user.name "Your Name" git config --global user.email "email ...

  3. Git 常用命令详解

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  4. Git 常用命令大全

    Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库:$ git remote -v 添加 ...

  5. git log命令全解析,打log还能这么随心所欲!

    git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! ...

  6. Git常用命令总结

    Git常用命令总结 git init      在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.   git clone ...

  7. git 常用命令及解析 由浅入深

    笔者用的是windows系统,不过并没有什么影响. Git  分布式版本控制系统. 为了让初学git的人明白git是干什么的,有什么意义 笔者觉得先来介绍git作为版本控制器是怎么运作的会让大家对后边 ...

  8. git push命令

    git push命令用于将本地分支的更新,推送到远程主机.它的格式与git pull命令相仿. $ git push <远程主机名> <本地分支名>:<远程分支名> ...

  9. git常见命令

    总结自己的Git常用命令 使用git也有一段时间了,把自己常用的命令用自己的描述记录起来,方便自己备忘也方便其他人参考. 目录: 最基本的命令: git clone 拷贝并跟踪远程的master分支. ...

  10. git config命令使用

    1. git config简介 我们知道config是配置的意思,那么git config命令就是对git进行一些配置.而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?互动一下,先问下大 ...

随机推荐

  1. TCP/IP原理简述

    TCP/IP与OSI TCP/IP工作在第4层,在TCP/IP协议簇中,有两个不同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议),它们分别承载不同的应用.TCP协议提供可靠的服务,UDP ...

  2. shell进阶教程

    背景:就自己常用的shell脚本写作风格,总结了一些知识点.也是作为交接工作的一部分文档.部分内容单独写 #!/bin/sh # shell脚本进阶教程 # 1.常用知识点:变量设置/日期设置/格式化 ...

  3. 20145322《Java程序设计》第4次实验报告

    实验内容 1.搭建Android环境 2.运行Android 3.修改代码并输出自己的学号 实验步骤 搭建Android环境 安装Android,核心是配置JDK.SDK 运行Android 最终结果 ...

  4. MR案例:小文件处理方案

    HDFS被设计来存储大文件,而有时候会有大量的小文件生成,造成NameNode资源的浪费,同时也影响MapReduce的处理效率.有哪些方案可以合并这些小文件,或者提高处理小文件的效率呢? 1). 所 ...

  5. 在eclipse搭建python开发环境

    在一次看别人帖子的时候发现,别人是用eclipse来写python代码的,所以好奇也想尝试一番,之前一直在用Pycharm,这个也确实是最好的开发python的IDE了,但是有时候也会有卡顿的情况,主 ...

  6. ImportError: No module named Crypto.PublicKey

    答: sudo apt-get install python-pip  (如果没有安装pip的话,需要这一操作) pip install pycrypto

  7. Fatal error compiling: java.lang.NoSuc hFieldError??

    用了两天时间,试了各种方法,问题最终解决.是JDK的版本问题:Maven3.5不支持jdk-9.0.1,最后退回:jdk1.8.0_151,问题圆满解决!! [ERROR] Failed to exe ...

  8. 记数排序 & 桶排序 & 基数排序

    为什么要写这样滴一篇博客捏...因为一个新初一问了一道水题,结果就莫名其妙引起了战斗. 然后突然发现之前理解的桶排序并不是真正的桶排序,所以写一篇来区别下这三个十分相似的排序辣. 老年菜兔的觉醒!!! ...

  9. Stm32F103面向对象编程之GPIO

    STM32F103 GPIO面向对象变成实例 创建一个GPIO对象 GpioClass gStateLed = NEW_GPIO(C, 0, GPIO_Mode_Out_PP); 初始化对象 Gpio ...

  10. Objective C NSString 编码成URL 特殊字符处理

    找了一下网上的教程都是使用类似以下代码,Xcode提示这个CoreFoundation不受ARC管理,所以折中的方式是添加__bridge. NSString *encodedValue = (__b ...