一,安装Git:

1.1Linux上安装命令:

sudo apt-get install git

1.2在Windows上安装Git:

使用Windows版的msysgit,官方下载地址:http://msysgit.github.io/,点击进入官网,如果官网无法正常下载我这里有当前的最新版,已经上传到CSDN上,下载地址为:http://download.csdn.net/detail/huangyabin001/7564005,点击进入下载

1.3安装完成进行配置:

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

因为Git是分布式版本控制系统,每个机器都需要一个标识,也就是:你的名字和Email地址。

二,创建版本库

2.1创建资源库所在的目录,命令:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

pwd命令用于显示当前目录完整路径,为了避免各种问题我们尽量避免路径命中出现中文字符。

2.2通过git init命令把这个目录编程GIt可以管理的仓库:

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

!注意:版本控制系统只能跟踪文本文件的改动,例如txt文件、网页和所有的程序代码。版本控制器可以告诉你你的每次改动,但是图片、视频等二进制文件没办法跟踪,只知道文件大小的改变。在Windows下word格式也是二进制文件,因此我们如果要真正使用版本控制系统,就要以纯文本方式来编写文件,并且强烈建议使用标准的UTF-8编码。并且编辑文本文件我们推荐Notepad++,并要记得设置默认编码为UTF-8 without BOM.

2.3添加文件到资源库

第一步:我们新建一个文本文件到我们的资源库learngit目录下。

第二步:试用git add命令告诉GIt,把文件添加到资源库

$ git add test.txt

执行命令后,没有提示信息。

第三步:用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "wrote a test file"

说明:执行上述命令会打印提示信息如:

[master (root-commit) 3b15333] wrote a test file
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

git commit命令:-m后面输入的是本次提交的说明,可以输入任意有意义的内容,这样方便从历史记录中找到改动记录。

此外,我们可以同时添加很多文件,一起提交,例如:

$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files."

三,版本回退

3.1修改文件

原始文件中的内容为:this is my first  time to use Notepad++;

在原始文件中添加新的内容为:Add a new line。

3.2使用git status命令查看状态:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working d
        modified:   test.txt
no changes added to commit (use "git add" and/or "git commit -a")

执行git status命令,会打印提示消息。上述提示消息中告诉我们文件被修改,并没有提交。

3.3使用git diff命令查看详细修改内容;

$ git diff
diff --git a/test.txt b/test.txt
index d829b41..d6e3bba 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
-this is my first time to use Notepad
\ No newline at end of file
+this is my first time to use Notepad
+Add a new line。
\ No newline at end of file

3.4使用git add test.txt 命令和git commit -m “add a new line.”提交修改;然后在文本中新添加内容“add a new line again”,以上述命令重新执行一边。

3.5使用git log查看修改记录。

$ git log
commit 4e8b0d0aaa685a83fb96fe52997e5af1e9e541ce
Author: bill <huangyabin001@163.com>
Date:   Sat Jun 28 13:48:29 2014 +0800
    add a new line again
commit d4d025a1cffaa761a7b82f39551465f7610a82db
Author: bill <huangyabin001@163.com>
Date:   Sat Jun 28 13:47:43 2014 +0800
    add a new line
commit 3b15333fdbb147f183a9d3013eadfafc9b05b127
Author: bill <huangyabin001@163.com>
Date:   Sat Jun 28 13:18:15 2014 +0800
    wrote a test file

上述命令git log执行后会打印出具体日志信息。从上述信息中我们可以得到每次提交的记录,记录中包含提交的描述性信息例如“wrote a test file”,提交时间,提交人的具体信息等。而“commit
3b15333fdbb147f183a9d3013eadfafc9b05b127”则是我们每次提交的提交版本号,也称之提交的记录ID。

如果我们不需要提交人,提交时间等信息,我们也可以以一种更简洁的方式查看日志,只需要加上“--pretty=online”参数即可。

$ git log --pretty=oneline
4e8b0d0aaa685a83fb96fe52997e5af1e9e541ce add a new line again
d4d025a1cffaa761a7b82f39551465f7610a82db add a new line
3b15333fdbb147f183a9d3013eadfafc9b05b127 wrote a test file

3.6使用git reset命令回退版本

在工作当中,我们不可避免的使用回退版本,例如一个模块负责人提交了一部分代码,在项目负责人发编译发布版本前离开了工作岗位,项目负责人在编译发布版本的时候发现模块负责人工作失误造成项目无法编译通过,为了不耽误整个版本发布的工作,负责人不得不回退版本。

$ git reset --hard HEAD^
HEAD is now at d4d025a add a new line

上述命令中Head在Git中的概念是一个指向你正在工作中的本地分支的指针(可以把HEAD想象为当前分支的别名),其所对应的分支本质是个指向commit对象的可变指针。截止到目前的学习中,在我们若干差提交后,我们已经有了一个指向最后一次提交的master分支,它在每次提交的时候都会自动向前移动。

我们使用git log --pretty=oneline查看:

$ git log --pretty=oneline
d4d025a1cffaa761a7b82f39551465f7610a82db add a new line
3b15333fdbb147f183a9d3013eadfafc9b05b127 wrote a test file

这个时候我们发现记录中已经少了一条,并且打开文件也会发现,最后修改的内容已经不见了。

还拿上面的例子来说,如果项目管理员发现编译不能通过的原因不是模块负责人的误操作引起的,而是有其他原因引起的,并且当前需要发布的版本中需要模块负责人的改动,但是版本已经回退了,能否再回退到回退前的版本呢?

答案是肯定的,我们只需要知道我们需要回退到的那个版本号commit id即可(例如当前的命令窗口没有关闭,我们可以轻轻滑动滚轴就可以看到之前的版本号),或者知道前面一部分也可以。

$ git reset --hard 4e8b0d0
HEAD is now at 4e8b0d0 add a new line again

读者可以使用git log进行查看,是否已经回退成功。

但是如果当前的命令窗口已经关闭了,我们无法在命令窗口中查看我们之前打印的版本号了怎么办?git也为我们提供了一个命令来记录我们每次执行的命令“git reflog”

$ git reflog
4e8b0d0 HEAD@{0}: reset: moving to 4e8b0d0
d4d025a HEAD@{1}: reset: moving to HEAD^
4e8b0d0 HEAD@{2}: commit: add a new line again
d4d025a HEAD@{3}: commit: add a new line
3b15333 HEAD@{4}: commit (initial): wrote a test file

上述提示信息中最前面的字符串即是我们需要的版本号。

总结:我们在电脑中能够看到的目录,例如我们新疆an的文件夹learngit文件夹就是一个工作区,而隐藏目录.git是git的版本库,在这个版本中的index文件(stage)是一个很重要的文件,我们称之为暂存区,git为我们自动创建的第一个分之master,以及指向master的一个指针称作HEAD。我们之前添加文件的操作“git add”,实际上是把文件修改添加到暂存区。而提交操作“git commit”则是把暂存区的所有内容提交到当前分支。  因此我们如果要提交修改,在提交前我们应该执行git
add命令,把修改的文件添加到暂存区。

四,撤销修改 git checkout

我们不能绝对的保证在日常的工作中不会出任何差错,如果我们在提交代码前发前发现有错误,但是我们没有执行了git add命令把修改的文件添加到了暂存区,那么能否撤销此次修改呢?

答案也是肯定的。

$ git checkout -- test.txt

执行上述命令,没有任何提示消息。



而且我们也可以使用命令git reset HEAD file把暂存区的修改撤掉(unstage),重新放回工作区。

git reset HEAD test.txt

五,删除文件

首先我们新键一个文件,并去删除它

如果我们没用把它提交到版本库我们可以在文件管理器手动删除或者使用命令"rm 文件名"的方式进行删除,而如果我们要删除版本库中的文件我们可以使用"git rm 文件名"的方式来操作。

$ git rm test1.txt
rm 'test1.txt'

六,远程仓库

我们知道Git是分布式版本控制系统,同一个Git仓库,可以分不到不同的机器上,怎么分布呢?最早,有一台机器又一个原始版本库,此后其他机器进行克隆原始的版本,而且每台机器的版本库版本是一样的,没有主次之分。而且我们可以在充当“服务器”的机器上进行克隆,也可在同一台机器上克隆多个版本库,只要不在同一个目录下就好。

6.1从“服务器”仓库克隆,使用github进行git存储

第一步:注册GItHub帐号,GitHub官网地址:https://github.com/ ,点击打开。

第二步:创建SSH Key。在用户主目录下,如果有.ssh目录,并且该目录下有id_rsa和id_rsa.pub这两个文件,(跳过下一步操作),如果没有在windows打开Git Bash(linux 下打开Shell),创建SSH Key:

$ ssh-keygen -t rsa -C "huangyabin001@163.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/STAR/.ssh/id_rsa):
Created directory '/c/Users/STAR/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/STAR/.ssh/id_rsa.
Your public key has been saved in /c/Users/STAR/.ssh/id_rsa.pub.
The key fingerprint is:
1e:49:1e:a4:fa:38:65:0e:4c:41:20:df:67:a2:0c:bf huangyabin001@163.com

回车,使用默认设置就好,无需设置密码。如果顺利在用户主目录下会看到id_rsa和id_rsa.pub两个文件,其中id_rsa是私钥,不可泄露出去,而id_rsa.pub是公钥,可以公开。

第三步:登陆GitHub,打开Account settings,SSH Keys页面,并点击Add SH Key,添加SSH Key,Title可以自由定义,Key文本框中就是id_rsa.pub文件的内容,直接复制即可。

如果点击Add  SSH Key无反应,也就是没有弹出Title和Key的编辑框可能是浏览器的问题,换一个浏览器试试,360浏览器6.3的版本(其他版本没试,整的我开始还以为为是被墙掉了,后来验证一下才发现是浏览器的问题)就会出现这样的失误。

这里还需要解释一下,GitHub需要SSH Key的原因是为了确认确实是由你来提交的,而不是他人。

第四步:在GitHub上点击Create a new repo按钮,创建一个新的仓库。

创建成功后的界面:

第五步,将本地资源库推送到远程仓库中。

由于我们本地已经存在了一个仓库,我们可以根据上面的提示将本地的仓库推送到远程仓库中去。(请注意用户名正确,你自己的用户名)

$ git remote add origin https://github.com/huangyabin001/learngit.git

执行上述命令,没有任何信息提示;

接着执行

$ git push -u origin master
Username for 'https://github.com': huangyabin001
Password for 'https://huangyabin001@github.com':
Counting objects: 14, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (14/14), 1.15 KiB | 0 bytes/s, done.
Total 14 (delta 2), reused 0 (delta 0)
To https://github.com/huangyabin001/learngit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

在输入的过程中会要求你输入你在GitHub上的用户名和密码。根据提示进行操作即可。远程克隆到本地就不再赘述了,按照上面的命令进行执行即可。

刷新GitHub我们就可以看到我们push的仓库中的内容了。

深入学习:Windows下Git入门教程(上)的更多相关文章

  1. 深入学习:Windows下Git入门教程(下)

    声明:由于本人对于Git的学习还处于摸索阶段,对有些概念的理解或许只是我断章取义,有曲解误导的地方还请见谅指正! 一.分支 1.1分支的概念. 对于的分支的理解,我们可以用模块化这个词来解释:在日常工 ...

  2. 深入学习:Windows下Git新手教程(上)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huangyabin001/article/details/35557231 一,安装Git: 1.1 ...

  3. 深入学习:Windows下Git新手教程(下)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huangyabin001/article/details/35840591 声明:因为本人对于Git ...

  4. 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

    分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...

  5. 图解Windows下 GIT GUI 使用教程

    https://jingyan.baidu.com/article/19020a0a7ae6af529c284248.html 本篇经验将和大家介绍Windows下 GIT GUI 使用教程,希望对大 ...

  6. Windows下GIT安装与使用(上传远程端)

    Windows下GIT安装与使用(上传远程服务器) 1.  登陆http://msysgit.github.io/并下载Git 2.  打开下载的exe文件,一路默认(路径可以去修改).有可能电脑需要 ...

  7. git 入门教程

    git 入门教程之协同开发 前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协 ...

  8. 【亲测可用,亦可配置同一平台的不同账号,例如阿里云的两个不同账号】Windows下Git多账号配置,同一电脑多个ssh-key的管理

    Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接 ...

  9. windows下git的使用方法(码云)

    这表文章主要是用了可视化操作: 使用命令行操作:https://www.cnblogs.com/mswyf/p/9370238.html 一.安装Git Bash 为了在windows下使用Git,我 ...

随机推荐

  1. 《javascript高级程序设计》第八章 The Browser Object Model

    8.1 window 对象 8.1.1 全局作用域 8.1.2 窗口关系及框架 8.1.3 窗口位置 8.1.4 窗口大小 8.1.5 导航和打开窗口 8.1.6 间歇调用和超时调用 8.1.7 系统 ...

  2. Sum Root to Leaf Numbers [LeetCode]

    Problem description: http://oj.leetcode.com/problems/sum-root-to-leaf-numbers/ Basic idea: To store ...

  3. word linkage 选择合适的聚类个数matlab code

    clear load fisheriris X = meas; m = size(X,2); % load machine % load census % % X = meas; % X=X(1:20 ...

  4. 如何做好一位资深的web前端工程师

    Web前端开发工程师是一个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过5年.Web前端开发是从网页制作演变而来的,名称上有很明 显的时代特征.在互联网的演化进程中,网页制作是Web 1.0 ...

  5. [转]JDK6和JDK7中的substring()方法

    substring(int beginIndex, int endIndex)在JDK6与JDK7中的实现方式不一样,理解他们的差异有助于更好的使用它们.为了简单起见,下面所说的substring() ...

  6. Hadoop集群中添加硬盘

    Hadoop工作节点扩展硬盘空间 接到老板任务,Hadoop集群中硬盘空间不够用,要求加一台机器到Hadoop集群,并且每台机器在原有基础上加一块2T硬盘,老板给力啊,哈哈. 这些我把完成这项任务的步 ...

  7. Hive的Transform功能

    Hive的TRANSFORM关键字提供了在SQL中调用自写脚本的功能,适合实现Hive中没有的功能又不想写UDF的情况.例如,按日期统计每天出现的uid数,通常用如下的SQL SELECT date, ...

  8. 面向对象编程(OOP)基础之UML基础

    在我们学习OOP过程中,难免会见到一些结构图~各种小框框.各种箭头.今天小猪就来简单介绍一下这些框框箭头的意思——UML. UML定义的关系主要有:泛化(继承).实现.依赖.关联.聚合.组合,这六种关 ...

  9. Threading.Tasks.Task多线程 静态全局变量(字典) --只为了记录

    --------------------------------------------------------------后台代码---------------------------------- ...

  10. ID3

    # -*- coding: utf-8 -*- import copy from numpy import * import math class ID3DTree(object): def __in ...