• Git


    git init  :初始化项目

            在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹

    git clone :克隆

            获取一个URL对应的远程git repo,创建一个local copy

            一般的格式为: git clone [url]

            clone下来的repo会以URL最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] [newname] 指定

    git status :查询repo的状态

            -s:表示short ,-s的输出标记会有两列,第一列是对staging区域,第二列是对working目录

    git log :显示提交历史和分支

            --oneline --number:每条log只显示一行,显示number条数

            --oneline --number --graph:可以图形化地表示出分支合并历史

            [ branchname ] :可以显示特性分支的log

            --oneline branch1 ^branch2 : 查看在分支1,却不在分支2中的提交。^:表示排出这个分支(Windows下 ^branch2要加引号)

            --decorate: 显示出tag信息

            --author=[author name] :指定作者名的提交历史

            --since --before --until --after :根据提交时间筛选log

            --no-merges :可以将 merge 的 commits 排除在外

            --grep :根据 commit 信息过滤 log :git log --grep=keywords

            默认情况下,git log --grep --author 是 or 的关系 :满足一条即被返回,如果你想让他们是and的关系,可以加上 --all-match 的option。

            -S <string>:filter by introduced diff.

            比如:git log -S methodName (注意S和后面的磁之间没有等号分隔符)

            -p :show patch introduced at each commit

            每一个提交都是一个快照(snapshot),git 会把每次提交的diff计算出来,作为一个patch显示给你看

            另一种方法是 :git show [SHA]

            --stat : show diff of changes introduced at each commit

            同样是用来看改动的相对信息的,--stat 比 -p 输出更简单些

    git add

            在提交之前,git 有一个暂存区(staging area),可以放入新添加的文件或加入新的改动。commit时提交的改动是上一次加入到staging area中的改动,而不是我们disk上的改动。

            add <文件名(绝对路径或相对路径)>  :会递归地添加当前工作目录中的所有文件

    git diff

            不加参数的git diff :show diff of unstaged changes  

            此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容

            若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用:git diff --cached命令。

            --cached :show diff of staged changes

            (git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的)

            HEAD :show diff of all staged or unstated changes.

            也是比较working directory 和上次提交之间所有的改动。

            如果想看自从某个版本之后都改动了什么可以用:git diff [ version tag ] 跟log命令一样,diff也可以加上--stat参数来简化输出

            git diff [ branchNameA ] [branchNameB] :可以用来比较两个分支

                :他实际上会返回一个由A到B的patch,不是我们想要的结果。

             一般我们想要的结果是两个分支分开以后各自的改动都是什么,是由命令:git  diff [ branchA ] ... [ branchB ] 给出的。实际上他是:git diff $(git merge-base [branchA] [branchB] ) [branchB]的结果。

    git commit :提交已经被add进来的改动

            -m :"添加提交信息"

            -a : 会先把所有已经 track 的文件的改动add进来,然后提交(有点想SVN的一次提交,不用先暂存)。对于没有 track 的文件,还需要git add一下

            -amend :增补提交,会使用与当前提交节点相同的父节点进行一次新的提交,旧的提交将会被取消。

    git rest :撤销更改或提交

            这里的HEAD关键字指的是当前分支最末梢最新的一个提交,也就是版本库中该分支上的最新版本。

            HEAD :unstage files from index and reset pointer to HEAD

                 这个命令用来把不小心add进去的文件从staged状态取出来,可以单独针对某一个文件操作 :git reset HEAD --filename (filename前的 -- 也可以不加。)

            --soft : 将HEAD移动到特定的提交引用,索引和分段不变。

            --hard :unstage的文件并撤消自上次提交以来工作目录中的任何更改。

                使用 git reset --hard HEAD <commit 的哈希码>/^HARD 进行一次reset,即上次提交之后,所有staged的改动和工作目录的改动都会消失,还原到上次提交的状态。 这里的HEAD 可以被写成任何一次提交的SHA-1(commit的哈希码)。

            不带soft和hard参数的git reset,实际上带的是默认参数mixed。

        总结:

            --mixed ID :试讲 git 的 HEAD 变了(也就是提交记录变了),但文件并没有改变,(也就是working tree 并没有改变)。取消了commit和add的内容

            --soft ID :实际上,是 git reset --mixed ID 后又做了一次git add 。 即取消了commit的内容

            --hard ID:是将 git 的 head 变了,文件也变了

            改动范围如下:

                soft(commit) < mixed (commit + add) < hard (commit + add + local working)

    git revert :

            反转撤销提交,只要把出错的提交(commit)的名字(reference)作为参数传给命令就可以了。

            HEAD :撤销最近的一个提交,git revert 会创建一个反向的新提交,可以通过参数 -n 来告诉git先不要提交

    git r m :

            file :从 staging 区移除文件,同时也移除工作目录。

            --cached :从staging去移除文件,但留在工作目录中。从功能上等同于git reset HEAD,清楚了缓存区,但不动工作目录树。

    git clean:从工作目录中移除没有track的文件(没搞懂,最好不用)

            -d :表示同时移除目录

            -f  :表示force,因为在git的配置中,clean.requireForce=true,如果不加-f,clean将会拒绝执行

    git mv :(喵喵喵???)

            git r m --cached orig;mv orig new;git add new

    git stash :把当前的改动压入一个栈。

        git stash 将会把当前目录和index中的所有改动(但不包括未track的文件) 压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处

            list : 会显示这个栈的list

            apply:取出stash中的上一个项目(stash@{0}),并且应用于当前的工作目录。也可以指定别的项目,比如git stash apply stash@{1}。

            如果你在应用stash中项目的同时想要删除它,可以用git stash pop

        删除stash中的项目:

            drop :删除上一个,也可指定参数删除指定的一个项目

            clear:删除所有项目

    git branch:显示所有分支

            

            

  • 相关阅读:
    python——scrapy的三种登录方式,下载中间件(Downloademiddleware),settings文件
    PHPExcel探索之旅---阶段四 导入文件
    PHPExcel探索之旅---阶段三 绘制图表
    PHPExcel探索之旅---阶段二 设置表格样式
    PHPExcel探索之旅---阶段一
    PDO中构建事务处理的应用程序
    对图片进行翻转
    用给定的角度旋转图像
    为背景图像添加图像水印(位置随机)
    对图片进行缩放
  • 原文地址:https://www.cnblogs.com/clement-jiao/p/8850230.html
Copyright © 2020-2023  润新知