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

    1、综述

      git是分支开发,主干发布,新建立的分支最好是基本master拉出去的。

    2、branch

      git branch  -a #参考当前所有分支,前面有*标识的表示当前所在的分支

      git branch p1 origin/master 
      git branch dev  origin/master #新建dev分支,该分支是基于 origin 的远程分支 master

      git checkout  dev#切换到dev分支

      git branch -d dev#删除dev分支

      git push --set-upstream origin dev #将新建的dev分支push到远程的dev分支上

    3、checkout和reset

      reset

        git reset HEAD <file>..." 撤出暂存区

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

        git reset --hard <commit> #替换引用的指向.引用指向新的提交ID(我的理解就是回到指定的历史版本信息)

      checkout

        git checkout -- filename
          用暂存区中的filename文件来覆盖工作区中的filename文件.相当于取消自上次执行git add filename以来(如果执行过)的本地修改
        git checkout -- .或者git checkout .
          会取消本地所有修改,相当于用暂存区的所有文件直接覆盖本地文件,
        git checkout 27d1bfd29b,回到这个提交点,git checkout dev,又会到最新的提交,而git  reset是不可以的。
        git checkout -- filename #用暂存区中的filename文件来覆盖工作区中的filename文件.相当于取消自上次执行git add filename以来(如果执行过)的本地修改

        git checkout  HEAD <commit> #取消本地所有修改,相当于用暂存区的所有文件直接覆盖本地文件

      区别

        git checkout 27d1bfd29b,回到这个提交点,git checkout dev,又会到最新的提交,而git  reset是不可以的。

    4、log、reflog、cherr-pick

      git log

        执行过git reset --hard HEAD~1  删除之前的commit提交信息。git log只查看到之前的git commit提交版本信息,恢复该提交点的commit看不到

      git reflog 

        git reflog可以查看所有的commit提交信息。可以通过git reset --hard <commit>进行恢复之前误恢复的操作

      example
        假设有三个commit, git status:
        commit3: add test3.c
        commit2: add test2.c
        commit1: add test1.c
        模拟丢失commit记录的情况,执行git reset --hard HEAD~1,删除了commit3,同时test3.c文件已经在working tree里看不到了,如果要恢复commit3,就要使用git reflog和git cherry-pick.
    
      git reflog
        502dd0f HEAD@{0}: HEAD~1: updating HEAD
        147b3b5 HEAD@{1}: commit: test3
        502dd0f HEAD@{2}: commit: test2
        0692c03 HEAD@{3}: commit (initial): test1
        HEAD@{0}: HEAD~1: updating HEAD
        加粗的即是被删除了的 commit3,运行git log则没有这一行记录,可以使用git reset --hard 502dd0f 将红色记录删除,恢复cmmit3,需要用git cherry-pick.
        
        git cherry-pick 147b3b5 #恢复到test3提交点     运行git log后可以看到:     commit3: add test3.c     commit2: add test2.c     commit1: add test1.c
    5、远程仓库
         
         git push origin dev 想把当前的代码push到远端的dev分支上,可是遇到奇怪的错误,可能因为没有执行git pull origin master
          

        执行git pull origin master后执行git push origin dev还是会报错,可以继续这样解决:

        git pull --rebase origin dev  #rebase  分支衍合,待研究#

    6、commit

        git commit --amend   #可以更改上一个提交的注释

    7、config alias

            git config --global alias.co checkout
            git config --global alias.br branch
            git config --global alias.ci commit
            git config --global alias.st status

  • 相关阅读:
    there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
    ActiveMQ使用示例之Queue
    JMS基本概念之一
    @ActiveMQ简单介绍以及安装
    Spring中 @Autowired注解与@Resource注解的区别
    classpath: 和classpath*:的区别
    Mybatis整合Spring
    @MyBatis主键返回
    Intellij Idea @Autowired取消提示
  • 原文地址:https://www.cnblogs.com/slogeor/p/3847423.html
Copyright © 2011-2022 走看看