zoukankan      html  css  js  c++  java
  • 深入学习:Windows下Git新手教程(上)

    版权声明:本文为博主原创文章,未经博主同意不得转载。 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.


    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文件的内容。直接复制就可以。



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

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

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


    创建成功后的界面:


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

    由于我们本地已经存在了一个仓库,我们能够依据上面的提示将本地的仓库推送到远程仓库中去。(请注意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的仓库中的内容了。

  • 相关阅读:
    可视化工具Grafana:简介及安装
    数据采集工具Telegraf:简介及安装
    怒怼某些自媒体培训机构,吃相不要太难看了!!!
    时序数据库InfluxDB:简介及安装
    jmeter(二十五)linux环境运行jmeter并生成报告
    Linux:CentOS7.4新建用户并授权
    服务端监控工具:Nmon使用方法
    Locust:简介和基本用法
    Quant Finance Master’s Guide 2020
    数据科学入门前需要知道的10件事
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10788395.html
Copyright © 2011-2022 走看看