windows 系统分布式版本控制 git 使用学习

1. 在 Windows 上安装 Git

    在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。

    安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

    安装完成后,还需要最后一步设置,在命令行输入:

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

    因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

    注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

2. 创建版本库

    版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  创建一个版本库非常简单:

    首先,选择一个合适的地方,创建一个空目录(为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文);

    第二步,通过git init命令把这个目录变成Git可以管理的仓库:

                            

    这样Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

    如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

    也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。不过,不建议你使用自己正在开发的公司项目来学习Git,否则造成的一切后果概不负责。

    命令说明:

        cd:进入一个目录(文件夹),可以是绝对路径也可以是相对路径。(这里的 e:eqd 是已经建好的文件夹)

        pwd:用于显示当前目录。在我的电脑上,这个仓库位于 e:eqd(也即 /e/eqd)

    把文件添加到版本库:

        首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。

        版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。

        而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

        ( Microsoft 的 Word 格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,如果要真正使用版本控制系统,就要以纯文本方式编写文件 )

        ( 因为文本是有编码的,比如中文有常用的GBK编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持 )

        (千万不要使用Windows自带的记事本编辑任何文本文件,建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可 )

      言归正传,首先在 e:eqd 文件夹下编写一个readme.txt文件,然后把一个文件放到Git仓库只需要两步:

        第一步,用命令git add告诉Git,把文件添加到仓库,

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

                                          

        简单解释一下 git commit命令:-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

        git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。

        为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

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

      小结:

          

      git add命令实际上就是把要提交的所有修改放到暂存区(Stage),

      然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

3. 版本控制

    我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件并保存,然后运行git status命令看看结果:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)    //使用 git add 来更新需要提交的
  (use "git checkout -- <file>..." to discard changes in working directory)    //使用 git checkout 来去除不需要更新的

        modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

    git status 命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有添加准备提交的修改项。

    提交修改和提交新文件是一样的两步,第一步是git add,

    在执行第二步git commit之前,我们再运行git status看看当前仓库的状态,git status告诉我们,将要被提交的修改包括readme.txt,下一步,就可以放心地提交了。

    提交后,我们再用git status命令看看仓库的当前状态,Git告诉我们当前没有需要提交的修改,而且,工作目录是干净(working directory clean)的。

    

  版本回退:

  撤销修改:

      如果用git status查看一下,你可以发现,Git会告诉你,git checkout -- file可以丢弃工作区(工作区)的修改。

      命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

          一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

          一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

      总之,就是让这个文件回到最近一次git commitgit add时的状态。

      git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

      现在假定是凌晨3点,你不但写了一些胡话,还git add到暂存区了。庆幸的是,在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交。

    Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区。git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

      再用git status查看一下,现在暂存区是干净的,工作区有修改。还记得如何丢弃工作区的修改吗?整个世界终于可以恢复清静了!

      现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。

    还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把“stupid boss”提交推送到远程版本库,你就真的惨了……

原文地址:https://www.cnblogs.com/zhangchaoran/p/8425680.html