> 文档中心 > 【Git版本控制管理】开始使用Git

【Git版本控制管理】开始使用Git


开始使用Git 【新手上手】

文章目录

  • 开始使用Git 【新手上手】
      • Git命令
      • Git的初次使用
        • 3.1 创建初始版本
        • 3.2 将文件添加到版本库中
        • 3.3 配置提交作者的信息
        • 3.4 再次提交
        • 3.5 查看提交
        • 3.6 查看提交差异
        • 3.7 版本库内文件的删除和重命名
        • 3.8 创建版本库副本
      • 配置文件

上次说到安装Git软件 【Git版本控制管理】Git入门介绍及Git的安装 , 接下来开始正式使用Git软件
安装完Git后可以在Git Bash上试试Git的命令行

请添加图片描述

Git命令行

  • 输入git , 它会列出选项和常用的命令
$ gitusage: git [--version] [--help] [-C <path>] [-c <name>=<value>]    [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]    [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]    [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]    [--super-prefix=<path>] [--config-env=<name>=<envvar>]    <command> [<args>]These are common Git commands used in various situations:start a working area (see also: git help tutorial)   clone     Clone a repository into a new directory   init      Create an empty Git repository or reinitialize an existing onework on the current change (see also: git help everyday)   addAdd file contents to the index   mv Move or rename a file, a directory, or a symlink   restore   Restore working tree files   rm Remove files from the working tree and from the indexexamine the history and state (see also: git help revisions)   bisect    Use binary search to find the commit that introduced a bug   diff      Show changes between commits, commit and working tree, etc   grep      Print lines matching a pattern   logShow commit logs   show      Show various types of objects   status    Show the working tree statusgrow, mark and tweak your common history   branch    List, create, or delete branches   commit    Record changes to the repository   merge     Join two or more development histories together   rebase    Reapply commits on top of another base tip   reset     Reset current HEAD to the specified state   switch    Switch branches   tagCreate, list, delete or verify a tag object signed with GPGcollaborate (see also: git help workflows)   fetch     Download objects and refs from another repository   pull      Fetch from and integrate with another repository or a local branch   push      Update remote refs along with associated objects'git help -a' and 'git help -g' list available subcommands and someconcept guides. See 'git help ' or 'git help 'to read about a specific subcommand or concept.See 'git help git' for an overview of the system.

Tips : 在Git Bash下输入的命令和Linux的风格是一致的, 比如要清空屏幕显示的代码行, 则使用clear命令。还有命令的参数:-后面加简写(一般后面带一个字母), --后面加单词全称(一个单词)。

  • 查看Git所有命令

    git help --all
  • 显示Git版本号

    git --version

Git的初次使用

3.1 创建初始版本库

  • 以Windows系统为例, 先在文件管理器中建一个文件夹
    • 比如新建一个GitUsing文件夹
    • 鼠标右键点击选择Git Bash Here

请添加图片描述

  • 进入到命令行, 以这个文件夹进行操作

请添加图片描述

Git不关心你是从一个完全空白的目录还是由一个装满文件的目录开始的。在这两种情况下,将目录转换到Git版本库的过程是一样的。

  • 创建初始版本库命令

    git init

请添加图片描述

  • 在刚刚创建的空仓库中放文件(可以创建任意文件)

请添加图片描述

  • ok, 在刚刚的文件夹的基础上用Linux的命令创建了一个public_html的文件夹, 再在文件夹内创建index.html的文件

3.2 将文件添加到版本库中

  • 如果只是将某个文件(filename指文件名)添加到版本库中, 用下面的命令

    git add fliename
  • 如果需要将当前目录及子目录中的文件都添加到版本库里, 用下面的命令

    git add .

    参数 . : 点或者UNIX说法中的“dot”,是当前目录的简写

请添加图片描述

在add之后,Git知道index.html 这个文件是要留在版本库里的。然而,到目前为止,Git还只是暂存(staged)了这个文件,这是提交之前的中间步骤。Git将addcommit这两步分开,以避免频繁变化。试想一下,如果在你每一次添加、移除或更改一个文件的时候都要更新版本库,会麻烦和费时!相反,多次临时的和相关的步骤,如一次添加,可以“批处理”,来保持版本库是稳定和一致的。

即在暂存区的文件还是可以修改和被检测出是否与工作目录的内容是否一致, 等这个版本完成后再统一commit到版本库即可。

Git的状态 : Git本地有三个工作区域:工作目录(Working Directory)暂存区(Stage/Index)资源库(Repository或Git Directory)。如果在加上**远程的git仓库(Remote Directory)**就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

  • 运行git status命令,显示中间状态(暂存区)的index.html
git status

请添加图片描述

可以看出显示中间状态的index.html的字段是绿色的, 这是文件状态的标志

  • 现在先修改一下index.html文件, 再去看它的状态

请添加图片描述

  • 可以看出 modified(修改的), 即git发现了已经提交的文件有了修改, 则显示红色, 未在暂存区, 这时候又需要把它添加到暂存区

请添加图片描述

  • 接下来将在暂存区的文件提交到本地的版本库

    git commit -m '日志信息'

    注意 : git commit 命令必须提供日志消息

    或者

    git commit -m '日志信息' \--author='作者名'

请添加图片描述

这里会发现第一次使用Git提交文件到版本库就需要你告诉它你是"谁", 也就是提交作者的信息

3.3 配置提交作者的信息

根据它的提示进行配置提交作者的信息

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

请添加图片描述

  • ok 配置完成

    注意 : 这个配置每一个 Git 提交都会使用这些信息,它们会默认写入到你的每一次提交中。 如果需要为单独地对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置, 比如 :git config user.email "you@example.com", 这样系统会优先以这个信息写入到你这个项目的每一次提交中

3.4 再次提交

git commit -m 'version 1'

请添加图片描述

提交成功, 提交成功后再输入git status, 你就会发现下面没有列出要提交的文件了

或者也可以在提交时加上作者的信息

git commit -m 'version 2' --author='zeny'

请添加图片描述

3.5 查看提交

一旦在版本库里有了提交,就可以通过多种方式查看它们。有些Git命令显示出单独提交的序列,有的显示出一次提交的摘要,还有的则会显示出版本库里每次提交的所有细节。

  • git log命令会产生版本库里一系列单独提交的历史
git log

请添加图片描述

条目按照从最新的到最老的顺序罗列出来 ;每个条目显示了提交作者的名字和email地址,提交日期,变更的日志信息和提交的内部识别码。如果版本日志超过四个版本,git log默认只显示最新的4个版本, 如果要看更多按Enter键或者上下方向键。按q退出日志查看

  • 如果需要看每次更为详细的信息可以使用git show 提交码 的命令来查看

    请添加图片描述

    git show 8ee42a41fc5c9c137a0d6b92d460a763c302a657

    请添加图片描述

  • 如果只是想看最新一次的提交的详细信息, 可以直接使用git show 不用加提交码, 它默认是最新一次的提交的详细信息

    git show

    请添加图片描述

  • 还可以通过git show-branch命令查看当前开发分支简洁的单行摘要

    # 默认只列出最新的提交(即只显示一个版本)git show-branch# 查看额外的一个版本git show-branch --more=1# 查看额外的两个版本git show-branch --more=2

    请添加图片描述

3.6 查看提交差异

因为通常每个版本都是不同的, 为了对比每个版本之间的差异, 可以使用git diff

  • git diff 两个版本的ID名 (即提交码, 一段hash序列)

    git diff 09df6e9c8b4322eff5d0cfa7180e3e5adf02b410  beafcaa9236ca6b3be74c3c77acfea4270ee47e8

    请添加图片描述

    名为09df6e9c8b4322eff5d0cfa7180e3e5adf02b410的第三次修订版本是早期版本,名为beafcaa9236ca6b3be74c3c77acfea4270ee47e8的第四次修订版本是较新的版本。因此,每行新内容前面都有一个加号(+)

3.7 版本库内文件的删除和重命名

从版本库里删除一个文件与添加一个文件是类似的, 也是需要两步的, 第一步git rm 文件名 ; 第二步git commit -m '提交信息'

  • 删除文件使用git rm 文件名 ; git rm表示你想要删除这个文件的意图并暂存这个变更

    git rm filename

    git rmgit add 命令是相反的, 一个是删除, 一个是添加, git rm只能删除提交到版本库的文件, 如果文件只是在工作目录或者暂存区则不能用该命令删除, 就要用rm命令才能删除.

    但一旦删除版本库的文件, 工作目录的文件也会同步被删除

  • 再使用git commit -m '提交信息' 在版本库里实现这个变更。

    git commit -m '提交信息'

请添加图片描述

  • 重命名文件 git mv 旧文件名, 新文件名 ; 示你想要删除这个文件的意图并暂存这个变更

    git mv filename newfilename
  • 再使用git commit -m '提交信息' 在版本库里实现这个变更。

    git commit -m '重命名xxx'

请添加图片描述

3.8 创建版本库副本

如果已经建立了一个版本库, 想要在别处同时建立相同的版本库, 就把那部分复制过来,就可以通过 git clone 命令创建一个完整的副本,或叫克隆。这就是世界各地的人们如何通过Git在相同的文件上从事他们喜欢的项目,并保持与其他版本库同步。最常见的就是在GitHub上看到好的项目可以下载下来, 这本质就是创建版本库的副本, 然后就可以在副本中进行操作。

比如新建一个文件夹来存放一个从别处复制过来的项目, 现在本地的文件夹中实现克隆功能。

以刚刚的例子来实现

请添加图片描述

请添加图片描述

  • git clone 克隆的地址或路径 直接把那个项目复制到当前的文件夹中,

    $ git clone  /e/GitTraining/GitUsing

    或者需要克隆到自己命名的项目中 git clone 克隆的地址或路径 新命名

    $ git clone  /e/GitTraining/GitUsing myhtml

    建立一个副本,并命名为myhtml

请添加图片描述

虽然这两个Git版本库现在包含相同的对象、文件和目录,但是还有一些细微的差别。如果你想要探索其中的不同之处,可以使用以下这些命令。ls -lsadiff -r
一旦复制了一个版本库,就可以修改这个复制版本、做出新的提交、查看它的日志和历史等。这是一个有着完整历史的版本库。

配置文件

Git的配置文件全都是简单的.ini 文件风格的文本文件。

  • 查看配置命令

    # 列出在整组配置文件里共同查找的所有变量的设置值, 按q退出查看git config -l# 版本库特定的配置设置,这些设置拥有最高优先级。你需要进入某个Git仓库中才能让该选项命令生效git config --local -l    # 查看系统configgit config --system -l # 查看当前用户的配置git config --global -l

    配置文件路径 : 和很多工具一样,Git支持不同层次的配置文件。按照优先级递减的顺序。

    .git/config : 版本库特定的配置设置,可用--file选项修改,是默认选项。这些设置拥有最高优先级。这些文件都在初始化一个版本库中生成一个.git文件夹, 这个文件夹是隐藏文件夹, 里面就有config配置文件。

    C:\Users\Administrator\ .gitconfig : 当前登录用户的配置文件, 是存放用户的配置文件 ,它的优先级是次高; 比如我的电脑是放在C:\Users\Lenovo\.gitconfig

    Git\etc\gitconfig :Git 安装目录下的配置文件, 是存放git系统的配置文件。它的优先级相对最低

请添加图片描述

  • 设置配置文件(直接用命令设置或者可以直接找到配置文件用记事本进行编辑 )
# 要建立一个作者名和email地址,用于你对所有版本库的所有提交git config --global user.name "zeny"git config --global user.email "zeny@qq.com"# 若只设置一个版本库特定的名字和email地址,覆盖--global的设置,只需要省略--global标志git config user.name "张三"git config user.email "xxx@qq.com"# 可以使用--unset选项来移除设置git config --unset --global user.emailgit config --unset user.email
  • 可以通过以下命令查看所有的配置以及它们所在的文件路径:

    git config --list --show-origin

    请添加图片描述

  • 因为配置文件只是简单的文本文件,所以可以通过cat命令来查
    看其内容

    • 比如 cat .git/config
      【Git版本控制管理】开始使用Git

参考文献 :
《Git版本控制管理 第二版》人民邮电出版社
《Pro Git》Git官网的pdf下载 ; 在线中文文档查看

未完待续…