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

原文地址:https://www.cnblogs.com/slogeor/p/3847423.html