zoukankan      html  css  js  c++  java
  • Git学习笔记

    一:git工作的三个状态:

    已修改状态(modified) ----------- 工作区

      |                                                 |

     add                                             |

      |                                                 |

    已暂存状态 (staged)----------- 暂存区

       |                                                |

      commit                                      |

      |                                                 |

    已提交状态(commited) ---------- 本地仓库

    一般开发流程: 1.创建仓库 ,从远程仓库克隆到本地仓库。

                              2.创建并切换到特性分支。

                              3.创建/修改文件。

                              4.提交工作文件到暂存区。

                              5.提交暂存区文件到本地仓库。

                              6.切换到主干分支。

                              7.合并特性分支到主干分支。

                              8.将主干分支推送到远程仓库。

    Git常用命令:

    1 git init会将当前的一个目录初始化为一个本地的仓库。

    2 git init后,可以使用git remote命令将本地仓库与远程仓库关联在一起:git remote add 远程仓库名 远程仓库的url

       git remote 会显示当前仓库所关联的远程仓库。

       git remote -v 会显示所关联的远程仓库的一些信息。

       git remote rename currentname newnake 会修改远程仓库的名字

       git remote remove name 来取消关联远程仓库

    3. git clone url 将远程仓库clone到本地。

    4.git status

    5.git commit -m "comments" 提交

    6.git push push到远程仓库

    7.git log 会记录所有commit操作,而且会被上传到远程仓库。每次提交都有一个文件的hash值来唯一标识这次commit。log中会记录commit的author和date

    8.git reflog 会记录所有的本地操作,不会被上传到远程仓库

    9.git config --add user.name name ; git config -add user.email email 来像config文件中写入username和userwmail

       git config -e来编辑config文件

       git config --remove-section sectionname 来删除config文件中的指定section

       git config --unset keyname 来删除config文件中的指定的key的信息

    10.git diff 默认来显示工作区与暂存区的差别

         git diff --staged 或者 git diff --cached来查看暂存区与本地仓库的差别

       git diff branch1 branch2 来找出俩个branch的差别

    11.git push --set-upstream original branch2  或 git push -u iriginal branch2如果在远程仓库中没有对应的本地分支,会将本地分支push到branch2这个远程分支

         git push 会默认push当前分支

       如果本地分支与远程的分支不对应,可以删除本地的分支:git branch --delete branchname ,然后git fetch

    12.git fetch 会将远程的branch都拉到本地的original/branch里,但不会影响本地其他branch。 如:会将远程的branch2拉到本地的origin/branch2,但是不会 影响本地原有的branch2分支。

        git merge后会将original/branch与本地已有的branch进行merge。

        git pull 执行的动作就是git fetch与git merge的结合。 

     git merge --abort 来取消上次的merge操作

    13git branch branch2 会创建branch2

        git branch -v 会出现本地分支的详细信息

    14 git checkout 会切换到别的分支

         git checkout --filename 来将工作区中的文件还原到其在暂存区的状态

         git checkout commit的hash值 filename 可以将file还原到对应的commit时的状态

         git checkout HEAD~ filename 来将file还原到上次commit的状态

         git checkout HEAD filename 来还原到最新的那个版本  

         git checkout HEAD~3 filename 来往旧还原3个版本

    15  git reset --mixed HEAD~将本地仓库的上一个版本的内容拷贝到暂存区,而不会拷贝到工作区

         git reset --hard HEAD~ 将本地仓库的上一个版本的内容拷贝的暂存区和工作区

         git reset --soft HEAD~ 将head的指针指向本地仓库的上一个版本,而不会改变暂存区和工作区

         git revert commit的hash值 会还原该次提交的内容,并生成一次新的commit

         git reset --hard commit的hash值 , 会回到该次提交,并删除此后的所有commit记录

    16  git cherry-pick 可以将一个分支的某次提交的内容与当前分支merge,而不会将俩个分支完全合并。这个命令一般应用在当进行某个分支的开发时,master分支出现bug,此时可以先在这个分支修复bug,

    然后commit这个修复,然后使用这个命令将修复的commit与master分支进行merge,可以修复master的bug而不会把这个分支的未完成的开发merge到master分支

    17  git rebase的功能和git merge 的功能一样,只是merge 的行为方式不一样。merge时是将俩个branch的叶节点merge成一个新的叶节点,然后俩个branch的叶节点都指向这个新的叶节点,rebase是将一个分支的与当前分支的不同的commit的节点都与当前分支的叶节点一一进行merge操作。

    你可以认为 HEAD(大写)是"current branch"(当下的分支)。 HEAD表示current head 的commit的版本, HEAD~表示HEAD的上一个版本。

    head(小写)是commit对象的引用,每个head都有一个名字(分支名字或者标签名字等等),但是默认情况下,每个叫master的 repository都会有一个head, 一个repository可以包含任意数量的head。在任何时候,只要这个head被选择成为”current head“,那么这个head就成了HEAD,总是大写。一开始,head指向最新commit的版本

       

  • 相关阅读:
    Android Push Notification实现信息推送使用
    线段树 Interval Tree
    树状数组
    LCA和RMQ
    RMQ (Range Minimal Query) 问题 ,稀疏表 ST
    winner tree 胜者树
    ORA-64379: Action cannot be performed on the tablespace assigned to FastStart while the feature is enabled
    mybatis 查询优化主子表查询之association和collection
    Oracle 11gR2 用户重命名(rename user)
    redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: 断开的管道 (Write failed)
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/5653386.html
Copyright © 2011-2022 走看看