Git 使用总结

Posted 程序员七哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git 使用总结相关的知识,希望对你有一定的参考价值。

    在使用 Git前,我们需要先了解 Git是什么?带着疑问,我们开始文章。

1.Git是什么?

    Git是目前世界上最先进的分布式版本控制系统(没有之一)。它是由大名鼎鼎的Linus花了两周时间完成的。目前,很多项目已经使用Git管理了,例如Linux等。

2.什么是集中式?分布式?

    先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。比较常用的有SVN等。

而分布式,简单来说,就是每个人自己的电脑就是一台独立的服务器,自己维护着仓库。如果需要可以将仓库提交至远程服务。

一、安装。

      不同的环境,安装方式都不一样!以Windows举例,在Windows上安装Git是Msysgit,先下载,Git下载地址,下载完成后,点击安装。安装过程中会有选择项,选择默认值即可!安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!


    安装完成后,在使用前,还需要配置一下,

$ git config --global user.name "Your Name"
    配置user.name,
$ git config --global user.email "email@***.com"
    配置的user.email ,

    配置完成后,可以使用如下命令查询配置信息,

$ git config --global user.name 
    显示配置的user.name,

$ git config --global user.email 
    显示配置的user.email ,

二、常用命令。

1.创建一个仓库。这一步不是必须的!如果我们已有仓库,这一步就跳过!

(1).首先需要本地创建一个目录,在该目录中创建仓库。仓库,英文名repository。可以手动创建,也可以通过命令创建。

$ mkdir git_cangku
$ cd git_cangku
$ pwd

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

    创建了一个git_cangku的目录,尝试给该目录建立一个代码仓库。

(2).通过git init命令可以把某个目录变成Git可以管理的仓库,例如

$ git init git_cangku

    这里我把本地的一个module作为一个仓库。


    当执行完命令后,当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,这个目录就是用来记录本地所有的Git操作的。如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见,


    至此,本地仓库已经创建成功了。

2.添加到版本库。

  1.在仓库中,使用git add命令将文件添加到仓库,

$ git add info.java

  我们还可以使用该命令将某一个文件夹添加到仓库,

$ git add src

  还有什么方法可以一次性就把所有的文件都添加好呢?当然可以,只需要在add的后面加上一个点,就表示添加所有的文件了,命令如下所示,

$ git add .

 2.使用git commit命令,将文件提交到仓库,

$ git commit -m "***"



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

 3.查看修改内容

  git status命令可以让我们时刻掌握仓库当前的状态。


    如果有修改,会有提示,例如,


    显示的信息告诉我们,strings.xml被修改过了,但还没有准备提交的修改。使用git diff这个命令可以查看具体修改了什么内容,


    可以看到具体的修改。接着使用之前的命令,git add命令和git commit命令,完成提交,


    提交完成后,再次输入git status命令和git diff命令,


    可以看到,修改已经同仓库一致了!

4.忽略文件。

    使用过SVN的朋友都知道,我们在刚开始提交代码至代码仓库的时候,需要添加一些不需要上传至代码仓库的文件、文件夹等,也就是忽略文件,将这些不需要上传至仓库的东东在忽略文件中添加即可。那么Git也是这么处理的。Git提供了一种可配性很强的机制来允许用户将制定的文件或目录排除在版本控制之外,它会检查代码仓库的根目录下是否存在一个名为.gitignore的文件,如果存在的话就去一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。注意.gitignore中指定的文件或目录是可以使用“*”通配符的。

    那么现在,我们就在该mvptest的根目录下创建一个.gitignore的文件,然后编辑该文件,


5.撤销未提交的修改。

    有时候突然发现修改代码,修改错了,需要回到之前未修改的状态,那么这种情况在git中要怎么操作呢?可以使用 checkout命令,


    执行完命令后,重新运行 git status命令查看,可以看到,当前项目中没有任何可提交的文件了,说明撤销操作确实成功 了。

不过这种撤销方式只适用与那些还 没执行过add命令的文件,如果某个文件已经添加过了,这种方式就无法撤销了,那么这种情况还能撤销吗?我们首先将一个已经修改的文件使用add命令,然后输入git status命令查看,


    这样的情况,执行checkout命令,发现修改已经存在,所修改的内容无法撤销掉。那么此时,有什么命令可以撤销添加吗?有的,reset命令,


    然后再运行checkout命令将修改的内容进行撤销了,


6.查看提交记录。

    可使用log命令查看历史提交信息,


    可以看到,每次提交记录都会包含提交id、提交人、提交日期,以及提交描述这四个信息。入股我们只想查看其中一条记录,可以在命令中指定该记录的id ,并加上 -1参数表示我们只想看到一行记录,


    如果想要查看这条记录具体修改了什么内容,可以在命令中加入-p 参数,


    在输入具体的提交id时,只输入了一部分,可以不用全部输入。

7.建立分支。

    分支是版本通知工具中比较高级的且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。

    分支的英文名是branch,如果想要查看当前的版本库中有哪些分支,可以使用git branch -a 这个命令,


    由于目前,还没有创建过分支,因此只有一个master分支,这也就是前面所说的主干线。接下来,我们就创建一个分支,


    这样就创建了一个名为version1.0的分支,我们再次输入 git branch -a 这个命令查看,


    可以看到,有一个叫作version1.0的分支。你会发现,master分支的前面有一个*号,说明目前我们的代码还是在master分支上,那么怎样才能切换到version1.0的分支上呢?需要使用checkout命令,


    再次输入git branch -a 命令检查,


    可以看到,我们已经把代码切换到了version1.0分支上了。在version1.0分支上修改并提交的代码将不会影响到master分支。同样的道理,在master分支上修改并提交的代码也不会影响到version1.0分支。因此,如果我们在version1.0分支上修复了一个bug,在master分支上这个bug仍然是存在的。这时将修改的代码复制到master分支上显然不是明智的,最好的办法就是使用merge命令来完成并合并,

git checkout master
git merge version1.0

    这样两行简单的命令,就可以把在version1.0分支上修改并提交的内容合并到master分支上了。当然,在合并分支的时候还有可能出现代码冲突的情况,这个时候你就需要自己静下心来慢慢找出并解决这些冲突。

    最后,如果我们不再需要某个分支,可以使用如下命令将这个分支删除,

git branch -D version1.1.1


三、小结。

1.git init命令,初始化一个Git仓库;

2.添加文件到Git仓库,分两步:
    第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
    第二步,使用命令git commit,完成。
3.git status命令,随时掌握工作区的状态;
4.git diff命令可以查看修改内容,如果有修改的话;

5.git log可以查看提交历史;

6.git reflog查看命令历史;


PS:

与远程版本库协作。

    如何使用Gir来进行团队合作开发呢?这就需要有一个远程的版本库,团队的每个成员都从这个版本库中获取到最原始的代码,然后各自进行开发,并且以后每次提交的代码都同步到远程版本库上就可以了。另外,团队中的每个成员最好都要养成经常从版本库中获取最新代码的习惯,不然的话,大家的代码就很可能出现冲突。

    

本篇文章内容部分摘录自郭神的《第一行代码》。



以上是关于Git 使用总结的主要内容,如果未能解决你的问题,请参考以下文章

[Git] 重学Git三剑客关键总结

GIT入门笔记(20)- 使用eclipse 基于 git 开发过程梳理

将特定的 SVN 分支迁移到 GIT(2018 年迁移的主干)

使用没有主干标签和分支的 SVN 存储库从 SVN 迁移到 Git

git合并指定分支的commit到主干上

git操作详解