zoukankan      html  css  js  c++  java
  • git常用操作命令

    Git常用命令总结:http://www.cnblogs.com/mengdd/p/4153773.html
    git rebase 使用 : http://blog.csdn.net/witsmakemen/article/details/22661605
    git fetch和git pull之间的区别 http://blog.csdn.net/a19881029/article/details/42245955
    使用原理视角看Git http://www.cnblogs.com/Coding-net/p/5577485.html

    想看到最近一次提交所有更改过的文件:对应命令 git log -n 1 --stat
    想看到最近一次提交所有更改的细节:对应命令 git log -n 1 -p


    服务器强制覆盖本地
    git fetch --all
    git reset --hard origin/master


    比较提交结果:
    1.比较working directory 和 index:

    git diff (or git diff --stat)

    2.比较index 和 repository:

    git diff --cached

    3.比较working directory 和 repository:

    git diff HEAD

    4.比较远程分支文件 和 working directory:

    git diff remote/remtoteBranch workingDirectoryFilename
    (例如: git diff origin/master src/ 或 git diff origin/master src/main.java)

    git diff origin/分支名 HEAD

    5.比较两次已提交版本:

    git diff SHA1 SHA2

    6.比较上次提交commit和上上次提交
    git diff HEAD^ HEAD


    git reset和git checkout:

    git reset

    git reset --hard :
    1.替换引用的指向.引用指向新的提交ID;
    2.替换暂存区.替换后,暂存区的内容和引用指向的目录树一致;
    3.替换工作区.替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同.

    git reset --soft :
    替换引用的指向.引用指向新的提交ID.
    即只更改引用的指向,不该编暂存区和工作区.

    git reset --mixed 或git reset :
    1.替换引用的指向.引用指向新的提交ID;
    2.替换暂存区.替换后,暂存区的内容和引用指向的目录树一致;
    即更改引用的指向及重置暂存区,但是工作区不变.

    实例:
    git reset
    仅用HEAD指向的目录树重置暂存区,工作区不受影响,相当于将之前用git add命令更新到暂存区的内容撤出暂存区.引用也未改变,因为引用重置到HEAD相当于没有重置.

    git reset HEAD
    同上

    git reset -- filename
    仅将文件filename的改动撤出暂存区,暂存区中其他文件不该变.相当于git add filename的反向操作.

    git reset HEAD filename
    同上

    git reset --soft HEAD^
    工作区和暂存区不改变,但是引用向前回退一次.当对最新提交的提交说明或提交不满意更改时,撤销最新的提交一遍重新提交.

    git reset HEAD^
    工作区不变,但是暂存区会回退到上一次提交之前,引用也会回退一次.

    git reset --mixed HEAD^
    同上

    git reset --hard HEAD^
    彻底撤销最近的提交.引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态.自上一次以来的提交全部丢失.


    git checkout
    git checkout [--]

    1.是可选项,如果省略则相当于从暂存区进行检出.和reset命令大不相同:重置的默认值是HEAD,而检出的默认值是暂存区.
    2.因此重置一般用于重置暂存区(除非使用--hard,否则不重置工作区),而检出命令主要是覆盖工作区(如果不省略,也会替换暂存区中相应的文件).
    3.该命令不会改变HEAD的头指针,主要用于指定版本文件覆盖工作区中对应的文件.如果省略,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中的对应文件.

    git checkout
    1.会改变HEAD头指针.之所以后面的参数写作,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入"分离头指针"的状态.在"分离头指针"的状态下的提交并不能被引用关联到,从而可能丢失.所以该命令主要作用是切换分支.
    2.如果省略则相当于对工作区进行状态检查.

    实例:
    git checkout branch
    检出branch分支,更新HEAD以指向branch分支,以及用branch指向的树更新暂存区和工作区.

    git checkout
    汇总显示工作区,暂存区与HEAD的差异

    git checkout HEAD
    同上

    git checkout -- filename
    用暂存区中的filename文件来覆盖工作区中的filename文件.相当于取消自上次执行git add filename以来(如果执行过)的本地修改

    git checkout branch -- filename
    维持HEAD的指向不变.用branch所指向的提交中的filename替换暂存区和工作区中相应的文件.会将暂存区和工作区中的filename直接覆盖

    git checkout -- .或者git checkout .
    会取消本地所有修改,相当于用暂存区的所有文件直接覆盖本地文件.

  • 相关阅读:
    【杭电】[4883]TIANKENG’s restaurant
    【杭电】[4883]TIANKENG’s restaurant
    【POJ】[1423]Big Number
    【POJ】[1423]Big Number
    【杭电】[1280]前m大的数
    【杭电】[1280]前m大的数
    【杭电】[1576]A/B
    【杭电】[1576]A/B
    [leetcode]346. Moving Average from Data Stream滑动窗口平均值
    [leetcode]99. Recover Binary Search Tree恢复二叉搜索树
  • 原文地址:https://www.cnblogs.com/jonky/p/10154652.html
Copyright © 2011-2022 走看看