zoukankan      html  css  js  c++  java
  • Git本地仓库基本操作-1

    获取Git仓库

    • 从Github服务器上克隆已经存在的仓库
      首先打开Git的命令行窗口,找一个位置创建一个新文件夹,用来存放从github上克隆的项目:
      cmd创建新文件夹.png
      打开github官网登入个人帐户,选择一个要克隆的项目,并复制其url:
      克隆Github项目.png
      执行git clone 命令:
      执行克隆命令.png
      因为这是个空的仓库所以克隆完成后给出了警告,命令执行完成后文件夹中就有了一下内容:
      克隆结果.png

      开可以通过SSH链接来从Github服务器上克隆,后续在介绍

    • 从本地已经存在的目录中创建Git仓库
      例如:现在我的电脑上有这样一个文件夹
      本地目录建立Git仓库.png
      现在我要对这个目录中的内容进行管理,那么我们先打开Git命令行,并切换到该目录,然后使用git init命令建立一个Git仓库:
      运行·git_init后.png

      现在要了解Git中文件的两种状态:已跟踪和未跟踪

      • 未跟踪:指的是未被纳入到版本控制的文件,它们既不存在于之前的快照记录中,也没有放入暂存区,例如从本地建立的Git仓库
        在开始的时候目录下的所有文件都是未被跟踪的
        例如:在上面执行完git init命令后,在接着执行git status命令来查看目录下的文件状态:
        建立git仓库后查看文件状态.png
        显示了当前目录下未被追踪的文件

      • 已跟踪:已经纳入版本管理的文件,在之前的快照中有它们的记录,在一段时间后它们的状态可能是未修改,或者已修改,或者已经暂存,
        对于从Github上克隆下来的项目,其状态都是已经提交且未修改状态
        现在使用git add 命令来跟踪目录下的所有文件:
        追踪文件.png
        可以看出之前未被追踪的文件都已经被追踪,这些文件目前的状态是已暂存
        这里在git add 命令后面使用--all参数追踪当前目录下所有的文件,还可以使用git add filepath 的方式将某个路径下的文件夹纳入追踪,
        如果想只追踪以某个文件后缀结尾的所有文件,那么可以使用*.xx参数,例如我要追踪所有以.c结尾的文件,则使用git add *.c即可将所有以.c
        结尾的文件纳入追踪,现在讲这些已追踪的文件使用git commit 命令进行提交:
        GitCommit.png
        因为我将文本编辑器设置为Notepad++,所以执行git commit命令后Notepad++就被启动了,等待我输入提交信息,输入完成后关闭Notepad++即可。
        来看看提交后的目录下的工作状态:
        提交后.png
        其实还可以使用git commit -m "伴随提交的信息",这样可以把要提交的信息追加到命令尾部,无需打开文本编辑器
        现在再来尝试修改一项目中的某个文件,并使用git status命令查看修改后文件状态:
        修改已经提交的文件.png
        现在在使用git commit命令进行一次提交,然后查看状态:
        提交已经修改的文件.png
        可以发现git commit命令执行完成后并没有什么卵用,被修改的文件还是处于已修改状态,因为git commit命令执行时提交的
        是上一次执行git add命令后暂存的版本,也就是文件修改之前的版本,所以对于已经修改的文件,还是要使用git add命令来将
        其暂存:
        修改后在addcommit.png

      通过上面的实验可以总结出如下的文件状态变化流程:
      文件状态的变化.png

    忽略文件

    有些文件我们不想纳入版本控制中,例如:一些存放敏感信息的文件,一些编译的中间产物等等..,但是每次执行git status命令时又会有未追踪文件的提示,
    对于有强迫症的同学,实在是难以忍受,那么可以在与.git文件夹平级的文件夹中建立一个无名的后缀名为.gitignore的文件,在这个文件中写入要忽略的
    文件后缀,例如:*.txt就是忽略所有以txt后缀的文件;在Windows系统中要注意是,在资源管理器中无法新建一个无名的文件,但是我们可以先建一个文件,
    然后使用文本编辑器打开,然后另存为的时候不要给名称,只给.gitignore后缀即可
    例如:将txt文件排除在外,将一个名为ttt的文件排除在外
    gitignore.png

    分别对这两个文件执行add命令:
    编写ignore后add.png

    可以发现这两个文件受.gitignore文件中的忽略规则限制无法暂存,使用git status命令查看时不在提示未追踪,通过上图报错提示可以看出,如果想把
    受限制的这两个文件添加到暂存,可以在add命令中使用-f参数,强行add即可;

    github上还有一个gitignore列表,已经编写好了各种语言和IDE中应该忽略的文件:https://github.com/github/gitignore
    关于.gitignore文件的编写规则,请参考Pro Git 的2.2节

    查看已暂存和未暂存的修改之间的差异

    • 查看目录中已经修改的文件和上次暂存文件的差异(git diff)
      在目录中新建一个文本文件,内容如下:
      新建文档.png
      执行git add -all后在执行git commit,然后在修改改文本文件,向其中追加内容:
      firstcommit.png
      现在向文本文件中追加内容:
      追加的内容.png
      在执行git diff命令:
      gitdiff.png
      通过git diff命令可以看出目录中被修改过的文件与上次暂存文件的区别

    • 查看已缓存的文件和上次所提交文件的差异(git diff --cached/--staged)
      接着上面的例子,现在使用git add 命令将修改过的文件添加到缓存中:
      缓存已修改.png

      现在使用git diff --cached命令查看缓存文件与上次提交文件的差异:
      gitdiffcached.png

    • 查看上次提交的文件和目录中被修改过文件的差异(git diff HEAD)
      接着上例,执行git diff HEAD命令:
      gitdiffHead.png

    跳过暂存区域直接提交所有文件

    前面的例子中我们都是先使用git add命令先进行暂存,然后在使用git commit进行提交,也可以使用git commit命令加上-a选项,
    可以直接跳过暂存将所有已经追踪过的文件暂存起来并提交.
    例如:
    gitcommitall.png

    考虑到特殊情况,如果文件修改后被缓存但是并未被提交,此时目录中的文件又被修改,那么此时执行git commit -a命令后,
    这次提交的快照的内容如目录中被修改的文件保持一致:
    commitspecialcase.png

    修改上一次的提交

    git commit --amend
    

    这个命令将会把暂存区中的文件再次提交,如果上一次提交后暂存区中的内容没有变化,那么这次提交只修改提交的信息,
    如果暂存区发生了变化,例如我们修改了文件,并将其添加到了暂存区,此时使用该命令,会将暂存区的文件提交,带有--amend
    参数的commit命令只修改上一次的提交,不生成新的提交记录。
    例:暂存区未发生变化,执行git commit --amend
    gitcommitamend.png
    共做了两次提交,由于第一次提交后暂存区没有发生变化,所以第二次提交只修改了提交信息,虽然两次提交,但是只有一次
    提交记录。

    例:暂存区发生了变化,执行git commit --amend
    我先修改文件,然后将其暂存,然后在执行git commit --amend:
    gitcommitamendmodified.png
    提交后查看提交记录,只有一条提交记录

  • 相关阅读:
    Jmeter入门(二、元件和组件)
    Jmeter入门(一)
    loadrunner (三、脚本执行&结果分析)
    loadrunner(二、创建脚本)
    Centos常用命令(九、shell编程-综合案例)
    Centos常用命令(八、shell编程-函数)
    利用python实现动态数组
    为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里
    #{}和${}的区别是什么
    Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不
  • 原文地址:https://www.cnblogs.com/UnknowCodeMaker/p/11192765.html
Copyright © 2011-2022 走看看