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

一,安装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.

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YWJpbjAwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

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仓库。能够分不到不同的机器上。怎么分布呢?最早,有一台机器又一个原始版本号库。此后其它机器进行克隆原始的版本号,而且每台机器的版本号库版本号是一样的,没有主次之分。

而且我们能够在充当“server”的机器上进行克隆。也可在同一台机器上克隆多个版本号库,仅仅要不在同一个文件夹下就好。

6.1从“server”仓库克隆。使用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

回车。使用默认设置就好。无需设置password。假设顺利在用户主文件夹下会看到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文件的内容。直接复制就可以。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YWJpbjAwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YWJpbjAwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

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

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

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

创建成功后的界面:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmd5YWJpbjAwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

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

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

$ 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上的username和password。依据提示进行操作就可以。远程克隆到本地就不再赘述了,依照上面的命令进行运行就可以。

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

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

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

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

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

    一,安装Git: 1.1Linux上安装命令: sudo apt-get install git 1.2在Windows上安装Git: 使用Windows版的msysgit,官方下载地址:http:/ ...

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

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

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

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

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

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

  9. Windows下Git多账号ssh-key(复制自己用)

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

随机推荐

  1. Windows Server 2016-批量设置用户下次登陆须更改密码

    Powershell设置某OU下所有用户下次登陆必须更改密码: Get-ADUser -Filter * -SearchBase "ou=syncall,dc=azureyun,dc=com ...

  2. 常见的Python脚本

    1.冒泡排序 lis = [56,12,1,8,354,10,100,34,56,7,23,456,234,-58] def sortport(): for i in range(len(lis)-1 ...

  3. c++智能指针和二叉树(1): 图解层序遍历和逐层打印二叉树

    二叉树是极为常见的数据结构,关于如何遍历其中元素的文章更是数不胜数. 然而大多数文章都是讲解的前序/中序/后序遍历,有关逐层打印元素的文章并不多,已有文章的讲解也较为晦涩读起来不得要领.本文将用形象的 ...

  4. 初探Parcel

    昨天趁有点时间看了前不久很火的构建工具Parcel,这里说下初步使用的感受,尤其是将其放到实际项目中和Webpack进行比较. 一.前言 首先说下笔者目前的技术栈.最近的前端项目主要以管理后台为主,技 ...

  5. 使用FsCheck编写Property-based测试

    使用FsCheck编写Property-based的测试 在编写基于Property-based的单元测试一文中,我们介绍了什么是Property-based测试.同时我们也总结了Property-b ...

  6. Java多线程打辅助的三个小伙子

    前言 之前学多线程的时候没有学习线程的同步工具类(辅助类).ps:当时觉得暂时用不上,认为是挺高深的知识点就没去管了.. 在前几天,朋友发了一篇比较好的Semaphore文章过来,然后在浏览博客的时候 ...

  7. 页面优化,谈谈重绘(repaint)和回流(reflow)

    一.前言 偶尔在面试过程中遇到过重汇与回流reflow的问题,毕竟页面优化也是考核一个开发者能力的关键之一,上篇文章聊了下documentfragment也是为了减轻回流问题,那么本篇文章好好介绍下重 ...

  8. Java 设置PDF文档背景色

    一般生成的PDF文档默认的文档底色为白色,我们可以通过一定方法来更改文档的背景色,以达到文档美化以及保护双眼的作用. 以下内容提供了Java编程来设置PDF背景色的方法.包括: 设置纯色背景色 设置图 ...

  9. Spring中关于AOP的实践之AspectJ方式实现通知

    (本文中如有不当之处,恳请批评指正) AspectJ方式的简化了通知的出现复杂度.但是对配置文件的操作复杂度有了一定的提升 一. 配置通知 package com.xkx.adviceDemo; im ...

  10. String-StringBuffer-StringBuilder的区别和源码分析

    一,String,StringBuffer,StringBuilder三者之间的关系 三个类的关系:StringBuffer和StringBuilder都继承自AbstractStringBuilde ...