什么是Git

Git是目前世界上最先进的分布式版本控制系统。最初由Linus Torvalds编写,用作Linux内核代码的管理。如果你是windows用户,看到这里你可能会担心“是不是只能用在linux上?或者Git对于windows不是那么友好。” ,那么我告诉你你的担心是多余的,GitHub 发布了GitHub for Windows,为 Windows 平台开发者提供了一个易于使用的 Git 图形客户端;微软也通过CodePlex向开发者提供 git 版本控制系统。

为什么学习Git

除了你可以使用Git来管理自己的项目之外,还因为越来越多的人使用Github来托管自己的开源项目,
你可以找到适合你的开源项目进行学习,加入到一个团队来提高自己。同时GitHub也可以帮助你找到满意的工作!!
没错,可能有公司看到你托管到GitHub的项目而向你发出offer,在简历中 你的GitHub 可能成为加分项。

安装设置Git

1.msysgit是 Windows版的Git  githttp://git-scm.com/download/win下载   安装完成后,点击开始菜单—》Git文件夹—》Git Bash  打开后 会出现下面的命令行窗体,证明你安装成功了。

2. 设置你的名字与Email,你的名字与Email会出现在你的提交记录中。

git config --global user.name "你的名字"

git config --global user.email "你的Email"

注意:git config使用--system参数时, Git 会读写/etc/gitconfig文件,该文件含有 对系统上所有用户及他们所拥有的仓库都生效的配置值

git config使用--global参数时, Git 会读写~/.gitconfig文件,该文件含有只适用于该用户的配置值

git config使用--local参数时, Git 会读写 由用户定义的各个库中Git 目录下的配置文件(.git/config),该文件含有只适用于该Git库的配置值

以上阐述的三层配置从一般到特殊层层推进,如果定义的值有冲突,以后面层中定义的为准,例如:在.git/config和/etc/gitconfig有冲突会采用.git/config值

你可以使用下面的命令来产看config的配置值

git config --list

3.在工作目录中初始化新仓库

仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪。

首先我们从命令行进入到仓库的文件夹:

使用

git init

命令来将文件夹变成Git可以管理的仓库。



这时仓库目录下多了一个.git的目录(如果没有,可能你的windows设置不显示隐藏的文件、文件夹,在文件夹选项中修改一下设置就好了。),这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

我们也可以从现有仓库克隆

git clone http://git.oschina.net/xxxxxx/xxxxxx.git

这里使用的是 clone 而不是 checkout,Git
收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。实际上,即便服务器的磁盘发生故障,用任何一个克隆出来的客户端都可以重建服务器上的仓库,回到当初克隆时的状态。

我们来clone 院子里寻找和谐大大的PaPaPa项目:

我先fork了一下这个项目,获取他的地址:

开始clone:

clone 完成,查看一下仓库的文件夹:

注:以上图片上传到红联Linux系统教程频道中。

Git各种操作

Git添加文件

在学习怎么添加文件之前我们先了解一下Git的工作流:

你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,指向你最近一次提交后的结果

首先使用git add命令将计划的改动提交到缓存区,

然后使用git commit -m 代码提交信息"命令,将代码提交到HEAD,此时还没有提交到服务器,

执行git push origin master命令以将这些改动提交到服务器,可以把 master 换成你想要推送的任何分支。

下面我们来尝试添加文件

1.在仓库文件夹内我新建了个readme.txt

2.使用命令 git add readme.txt添加到缓存区里面去。

3.用命令 git commit -m 把文件提交到HEAD。

4.使用 git status 检查当前文件状态

Git提交修改

1.首先我们先修改一下 readme.txt

2. 我们使用 git status 查看结果:

上面的信息告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

3. 我们可以使用 git diff +文件名 ,查看具体修改的内容。

4.使用git commit 提交修改的文件。

Git版本回退

1.使用git log  查询提交的历史记录

2.如果感觉显示的信息太多, 我们可以使用git log --pretty=oneline  命令

第一列一大串的字符为commit id ,是一个SHA1计算出来的一个非常大的数字,用十六进制表示,第二列为我们提交时填写的注释。

3.这时我们回退到上个版本可以使用git reset  --hard HEAD^ 命令,回退上上个版本 git reset  --hard 
HEAD^^ ,依次类推, 当我们回退100个版本时,可以写成git reset  --hard HEAD~100

可以看到 HEAD目前指向的是 commit id为9d3830c的版本。

4.我们已经回退了一个版本,我们可以撤销这次的回退 当然可以,我们使用 git reset --hard +commit id 形式版本号(没必要写全,前几位就可以了,Git会自动去找)。



可以看到 HEAD又重新指向了 commit id为4332ee4的版本。

Git删除文件与恢复文件

1.我们可以使用 git rm+文件名 命令来删除文件

2.我们使用 git status 命令 产看目前仓库状态



可以看到deleted:显示了 我们刚刚删除的文件,我们再看看仓库的文件夹,发现readme.txt 也没有了。

3.这时我们用git checkout命令来恢复刚刚删除的文件。

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

添加远程仓库

添加SSH Keys

SSH keys 是为了防止任何人随意clone 或 push 代码而产生的.

SSH keys 有公匙和密匙,你在本地生成了密匙和公匙之后,把你的公匙告诉给服务器或者其他协作者,那么你就可以在他们的git版本库clone和push代码等操作.相对于一台服务器来说,一台协作者机器对应一个SSH keys.

1.首先使用 $ ssh-keygen -t rsa -C "你的邮箱"

1.这里是输入你的SSH keys 保存的位置,就是前面括号内的路径。

2.输入口令,可以直接回车。

3.再次输入口令,可以直接回车。

打开刚刚ssh keys 保存的文件夹:



id_rsa 存放的就是私钥 , id_rsa.pub存放的是公钥,我们可以cat 路径/id_rsa.pub查看公钥。 也可以用文件管理器打开文件。

2.在github或者git@osc 添加你的公钥

远程仓库

1.在git@osc新建仓库

2.创建完成后添加后使用命令:$ git remote add origin git@git.oschina.net:你的用户名/gitstudy.git

远程库的名字是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

3.使用$ git push -u origin master把本地库的所有内容推送到远程库上

小结

关于Git,本篇文章也没讲到分支,感兴趣的同学先去看看廖雪峰老师的教程吧,这篇文章以后也会更新这部分内容,春节假期就这么匆匆过去了,感觉也没学到什么,希望继续努力。能坚持住写博客的习惯。

参考资料

1.廖雪峰老师的Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

2.Git使用简易教程:http://www.bootcss.com/p/git-guide/

git使用简单教程-(转自linux人)的更多相关文章

  1. Git使用简单教程,从建库到远程操作

    本地库初始化 找到项目文件->右键git bash->git init 设置签名 形式: 用户名 邮箱地址 作用: 区分不同开发人员身份 注意:这里设置的签名和登录的远程库的账号密码没有任 ...

  2. git使用简单教程

    废话不多说,直接开始 1. 进入https://github.com/ 创建你的账号,然后开始创建一个你的仓库(基本概念请自行百度),比如jun. 2. 创建好仓库之后,下载git 3,设置git,就 ...

  3. git github 使用教程

    参考文章:文章地址: http://wuyuans.com/2012/05/github-simple-tutorial/ github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般 ...

  4. Git和Github简单教程

    原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上. 这篇文章 ...

  5. linux下git的简单运用

    linux下git的简单运用 windows下也有git,是git公司出的bash,基本上模拟了linux下命令行.许多常用的命令和linux下操作一样.也就是说,windows下的git命令操作和l ...

  6. Git和Github简单教程(收藏)

    原文链接:Git和Github简单教程 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的 ...

  7. Git和Github简单教程【转】

    转自:https://www.cnblogs.com/schaepher/p/5561193.html#clone 原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但 ...

  8. Git简单教程

    该笔记总结廖雪峰Git教程, 参考网站: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017 ...

  9. 转:Git和Github简单教程

    转自:https://www.cnblogs.com/schaepher/p/5561193.html Git和Github简单教程   原文链接:Git和Github简单教程 网络上关于Git和Gi ...

随机推荐

  1. 如何使用yolov3训练自己的数据集

    博客主要结构 1. 如何在ubuntu18.04上安装yolo 2 .如何配置yolov3 3 .如何制作自己的训练集测试集 4 .如何在自己的数据集上运行yolov3 1. 在ubuntu18.04 ...

  2. JavaWeb 补充(JSP&EL&JSTL)

    1. JSP:     1. 指令     2. 注释     3. 内置对象 2. MVC开发模式 3. EL表达式 4. JSTL标签 5. 三层架构 JSP: 1. 指令     * 作用:用于 ...

  3. Day02_13_Javadoc_生成帮助文档

    JavaDoc 命令:javadoc -encoding UTF-8 -charset UTF-8 Doc.java 执行该命令后,会在java目录生成index.html打开就可以看到生成的文档了 ...

  4. 使用vue-element-admin框架从后端动态获取菜单

    1.前言 ​ vue-element-admin是一个纯前端的框架,左侧菜单是根据路由生成的.实际开发中经常需要根据当前登陆人员的信息从后端获取菜单进行展示,本文将详细介绍如何实现该功能. 2.详解 ...

  5. 2021软工-CSDN APP分析

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 案例分析作业要求 我在这个课程的目标是 提升软件开发能力,提高团队协作能力 这个作业在哪个具体方面 ...

  6. Spring Security极简入门三部曲(上篇)

    目录 Spring Security极简入门三部曲(上篇) 写在前面 为什么要用Spring Security 数据库设计 demo时刻 核心代码讲解 小结 Spring Security极简入门三部 ...

  7. 一文带你掌握MySQL查询优化技能

    查询优化本就不是一蹴而就的,需要学会使用对应的工具.借鉴别人的经验来对SQL进行优化,并且提升自己. 分享一套博主觉得讲的很详细很实用的MySQL教程给大家,可直接点击观看! https://www. ...

  8. 硬件篇-02-TX2刷机Jetpack4.3

    Jetson TX2收货将近一周了,期间趁摄像头还没到,预先给TX2配置了环境.由于学校要求写毕设日志,故干脆一起在知乎写了,顺带帮助想要给TX2配环境却苦于网络上关于TX2的教程很少的同学. 本期内 ...

  9. 查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现

    本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956455 在进行Android程序的逆向分析的时候,经常需要通过Androi ...

  10. hdu2158 最短区间版大家来找碴

    题意:                  最短区间版大家来找碴 Problem Description 给定一个序列,有N个整数,数值范围为[0,N).有M个询问,每次询问给定Q个整数,可能出现重复值 ...