git的使用

更多基础阅读可参考:廖雪峰 Git教程

参考原文出处:涂根华的博客

一、下载:

首先下载git,并安装。完成后并在开始菜单里面找到 "Git --> Git Bash",如下:


会弹出一个类似的命令窗口的东西,就说明Git安装成功。如下:


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


因为Git是布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。

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

二、操作

1、创建版本库。

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

    首先我希望在本地新建一个文件夹,用作版本库,如:我希望在D盘新建一个gitProject版本库。



mkdir 命令为新建文件夹。

pwd 命令是用于显示当前目录

    a、通过命令 git init 把这个目录变成git可以管理的仓库,如下:


    此时当前的gitProject目录下回多了一个.git的目录,这个目录是Git用来跟着管理版本的,没事千万不要手动乱改此目录里面的内容,否则,会把git仓库破坏掉。如下:

    b、把文件添加到版本库中。

               首先要明确,所有的版本控制系统,只能跟踪文本文件的改动,比如txt、网页、所有程序的代码等,Git也不例外,版本控制系统可以告诉你每次的改动,但图片和视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把这些文件每次改动穿起来,也就是知道图片从1kb变为2kb,但是到底改了啥,版本控制也不知道。

  

先手动在版本库gitProject目录下新建了一个记事本文件,readme.txt   ,并输入内容:11111111

第一步:使用命令git add + "文件名" 添加到暂存区里面,如:git add readme.txt

没有任何提示,表示已经添加成功了。


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

这时,我们已经提交了一个readme.txt文件了。注意,命令行里的“readme.txt提交” 为提交的注释,便于以后查看

      我们可以通过 git status 来查看是否还有文件未提交,如:


    说明没有任何文件未提交。如果在此时,继续修改readme.txt里面的内容,如在下面添加一行内容:22222222 ,再使用git status 来查看结果。如下:


  上面命令提示告诉我们,readme.txt文件已被修改,但是未被提交。

  我们可以通过命令:git diff readme.txt来查看到底修改了什么内容,如下:


  此处我们可以看到,readme.txt文件从一行11111111改成 两行,在第二行处添加了22222222内容。

  知道了对readme.txt文件的修改情况,我们可以放心地提交到仓库了。(第一步:git add 第二步:git commit)如下:



2、版本回退

  我们已经学会了修改文件,现在我们继续对readme.txt文件进行修改,再增加一行内容:33333333.继续执行命令如下: 

  现在已经对readme.txt文件做了3次修改了,那么,如果想查看历史记录,可以使用命令git log.如下:

   图中,commit后面接着的是每次提交的版本号,还可以看到我们在提交时打的注释。

   git log命令显示从最近到最远的显示日志,我们可以看到最近三次的提交,最近一次为文件增加33333333内容,上一次为文件增加2222222222内容,第一次默认是1111111111.如果觉得上面显示的信息太多,可以使用命令git log --pretty=oneline。如下:



  如果想使用版本回退操作,把当前版本回退到上一个版本,则可以使用两种命令,第一种:git reset --hard HEAD^ 那么如果要回退到上上个版本的话,只需把HEAD^改成HEAD^^,如此类推。第二种:如果想回到前100个版本,则使用git reset --hard HEAD~100即可。

    如下:

    想回到上一个版本,再查看readme.txt的内容,并用git log来查看历史信息:


打开readme.txt文件,发现真的回退到上一个版本:


如果此时我们又想恢复我们33333333的内容,就需要通过提交333内容时的版本号回退,命令为:git reset --hard +版本号。如果我们已经关闭过一次命令行或者3333的版本号我不知道,则需要通过命令:git reflog获得。如下:


由上面显示可以知道,增加内容3333时的版本号为070cb8e.所以用命令:git reset --hard 0e220b8 来恢复,并查看。如下:



3、理解工作区与暂存区的区别?

工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD

 前面我们说过,使用git提交文件到版本库有两步:

第一步:使用git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

我们继续演示:

在readme.txt中再添加一行44444444,接着在gitProject目录下新建test.txt文件,内容为test.先用命令git status来查看状态。


由此可看出,readme.txt被修改,并且新建了test.txt,但两个文件都未被添加到暂存区和提交到分支。

       我们需要使用git add 命令将两个文件添加到暂存区中,再使用git status 来查看状态。并一次性提交到分支上如下:


再查看状态:


4、Git撤销修改和删除文件操作。

   a、撤销修改:

      例如:在readme.txt文件里面添加一行内容为55555555,先查看通过命令查看:

      在提交之前发现添加的内容有误,故想撤销,恢复为以前的版本,可以有几种方法修改:


      第一种:如果我们知道要删掉的内容,可直接手动修改,再add 到暂存区,最后commit掉。

      第二种:我们可以按照之前教的方法,直接恢复到上一个版本,即使用git reset --hard HEAD^.

     如果都不想用上述两种方法,想直接使用撤销命令从而达到效果。首先我们在撤销之前,可以先用git status 查看当前状态:


你会发现,Git有提示你,git checkout --file可以丢弃工作区的修改。如下:

git checkout -- readme.txt,如下所示:


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

    1、readme.txt自动修改后,还没放到暂存区,使用撤销修改就回到和版本库一样的状态。

    2、另一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到了放入暂存区后的状态。

对于第二种情况,继续演示:先在readme.txt中添加内容:66666666.我git add存入暂存区后,接着添加内容77777777,我想通过撤销命令让其回到存入暂存区后的状态。如下:


注意:命令git checkout — readme.txt 中的 — 很重要,如果没有 — 的话,那么命令变成创建分支了。

二:删除文件。

加入我在版本库gitProject目录下添加一个文件delete.txt,然后提交。如下:

若此时我想删除delete.txt文件,可以直接在文件目录把文件删了,也可以使用 rm delete.txt删除,如果想彻底从版本库中删除掉此文件(此时工作区已没有delete.txt文件),可以再执行commit命令。

    只要没有commit之前,如果我们想在版本库中恢复rm了的文件,则可以使用git checkout -- 文件名。

如命令:git checkout -- delete.txt如下所示:


此时,工作区的文件已恢复。




出自:常用的git操作总结

从历史的提交建立新分支的方法:

方法一: checkout到历史提交,然后checkout -b。

方法二: reset到历史提交,checkout -b,然后再reset到原来的版本。

方法三: git branch <branch> <start point>

将某个历史版本全部拉到工作区和暂存区:方法一: 可能的需求是为了将过去删除掉的修改重新应用到最新的版本,这时可以先回到历史版本处建立分支,然后回到原来的最新的版本,进行merge分支的操作。方法二: reset加上hard参数到需要的历史版本,然后再reset加上soft参数回来。

将历史版本的某文件版本拉到当前工作区或者暂存区进行处理:方法一: git reset HEAD~2 foo.py,直接拉到暂存区。方法二: git checkout HEAD~2 foo.py,拉到工作区和暂存区。

已经有添加到暂存区的文件修改,之后又进行了修改。想要都撤销掉,变为和仓库中的版本相同(仓库覆盖工作和暂存):方法一:1、git reset HEAD file 清空暂存区的提交,变为和仓库中的版本相同。2、git checkout -- file 以暂存区为蓝本,覆盖掉工作区。方法二:git checkout HEAD -- file 。

已经添加到暂存区的修改之后又进行了修改,想要都撤销掉,变为和仓库中的版本相同(仓库覆盖工作和暂存):方法一:git reset --hard HEAD 重设HEAD,hard参数覆盖工作区和暂存区。方法二:强制切换到其他分支丢弃更改,然后再切回来。

撤销当前工作区的文件修改,变为和暂存区相同(暂存覆盖工作):方法一:git checkout -- file 暂存区覆盖工作区(以暂存区为蓝本,覆盖掉工作区)。

撤销添加到暂存区的文件修改,将修改退回到工作区(暂存先覆盖工作,然后仓库覆盖暂存):方法一:1、git checkout -- file 以暂存区为蓝本,覆盖掉工作区。 2、git reset HEAD file 清空暂存区的提交,变为和仓库中的版本相同。

清空暂存区文件修改:方法一:git reset -- file 清空暂存区的文件修改。

清空暂存区:方法一:git reset HEAD file 清空暂存区。

checkout文件层面的操作:主要对暂存区和工作区起作用,一般有暂存区覆盖工作区的行为特征。

reset文件层面的操作:主要对暂存区起作用。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值