力战者
力战者,天酬之!

git 正常提交流程:

git add .             //所有文件提交到暂存区

git commit -m "本功能全部完成"  //将提交文件提交到版本库 

 

 

  • 执行完add后,想撤回add,怎么办?

    git status          // 先看一下add 中的文件 

    git reset HEAD    *****            //如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 

 

  • 执行完commit后,想撤回commit,怎么办?

    git reset HEAD main.c;    将待删除的文件由暂存区恢复到工作区             //将之前添加到暂存区的的内容从暂存区移除

    git checkout -- main.c;     将工作区的修改丢弃;                                      //丢弃相对于暂存区中最后一次添加文件所作的变更

 

    

   或者:

 

  git reset --soft HEAD^    //这样就成功的撤销了你的commit                注意,仅仅是撤回commit操作,您写的代码仍然保留。

  注释:

  HEAD^的意思是上一个版本,也可以写成HEAD~1,如果你进行了2次commit,想都撤回,可以使用HEAD~2

  相关参数:

  • --mixed 

意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作   这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

  • --soft  

不删除工作空间改动代码,撤销commit,不撤销git add . 

  • --hard

删除工作空间改动代码,撤销commit,撤销git add . 

注意完成这个操作后,就恢复到了上一次的commit状态。

 

git rm与git rm --cached

当我们需要删除暂存区分支上的文件, 同时工作区也不需要这个文件了, 可以使用

1 git rm file_path
2 git commit -m 'delete somefile'
3 git push

当我们需要删除暂存区分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

git rm --cached file_path
git commit -m 'delete remote somefile'
git push

 

 git rm   与  操作系统的 rm  本质是一样的

区别:

  • git rm  main.c   完成

    1.删除文件 

    2.将删除文件纳入暂存区;

 

    回退删除之前:

      git reset HEAD main.c;    将待删除的文件由暂存区恢复到工作区

      git checkout -- main.c;     将工作区的修改丢弃;

 

  • rm    完成删除文件,但不将删除文件纳入缓存区 

 

    回退删除之前:

      git checkout -- main.c;     将工作区的修改丢弃;

 

 git mv  重命名

  • git  mv 源文件名  新文件名             //修改完成会被纳入暂存区

     git  mv main.c  test.c

  回退修改前

      git reset HEAD main.c;    将待删除的文件由暂存区恢复到工作区

      git checkout -- main.c;     将工作区的修改丢弃;

 

  • mv 源文件名  新文件名             //修改完成    并未纳入暂存区

      git  mv main.c  test.c

  回退修改前

      git checkout -- main.c;     将工作区的修改丢弃;

 

如果commit注释写错了,改注释

    git commit --amend

    此时会进入默认vim编辑器,修改注释完毕后保存就好了

     或者    git commit --amend -m "修正的消息"

 

posted on 2019-05-29 11:31  力战者  阅读(1711)  评论(0编辑  收藏  举报