git常用命令,参照廖雪峰老师的git教程

git的常用命令

写在开篇: 作为一个菜鸟,我想学习的最好的方式就是边学边记笔记,这里只是本人写的自己通过学习了廖雪峰老师的git教程之后自己做的笔记,个人理解,可能有失偏颇,如想学习更专业更权威的git知识,请移步廖雪峰老师的官网

一.创建git仓库

  1.git init  在本地创建一个空的仓库

  2.在远程创建一个项目仓库,gitHub内操作

    git remote add origin *****

  通过这两个步骤,就将本地仓库与远程仓库关联起来,然后在本地coding,提交代码到远程。也可以通过git remote -v 命令查看是否有fecth和push的权限

   

二.通过克隆的方式在本地创建仓库

      先在本地建立一个空的文件夹,在远程找到克隆的地址,有SSH和https两种协议。如果有ssh钥匙,可以通过ssh协议,如果没有配置就需要用https协议

    通过git clone ****(远程git地址) 在本地复制一份代码,这样就获得了一个已经以远程关联好了的本地仓库 

三、工作区、暂存区、版本库(图片来自廖雪峰官网Git教程

  

三.必用的三个命令

  git add *** 将本地仓库的内容提交到暂存区

  git commit -m“对本次提交的说明”  将暂存区的内容提交到版本库

  git push  将版本库里的内容提交到远程

       以上的命令是我们提交代码的过程中绝对不可缺少的

四、辅助命令

  git  status  查看状态,可以通过此命令查看哪写内容有修改,哪些内容是新创建的,是在暂存区,还是再工作区,通过这个命令可以了解的很清楚

  

  git diff ***  查看不同的地方,即可以通过此命令查看具体修改了***文件哪里

  

  git log 查看历史提交记录

  

  通过这个命令,可以清楚的看到提交的次数以及每次提交的commit_id,上图的内容很多,如果需要简单一些的我们可以通过git log --pretty=oneline查看提交日志

  

  这两个命令我们都可以看到commit_id,知道看commit_id我们就可以进行版本回退了。

  当前版本是HEAD

  git reset --hard HEAD^ 回退到上一个版本

  git reset --hard HEAD^^ 回退到上上一个版本

  ......

  如果是回退到前100个版本,则git reset --hard HEAD~100

  这样的版本回退看着有些麻烦,我们还需要数一下这个前几个版本,现在有一种更简单的,我们可以看到每次提交都会有一个commit_id,我们也可以根据这个进行版本回退

  git reset --hard (commit_id)

  我们可以个根据每次的提交说明,回到我们需要回退的版本;’如果我们把git的窗口关闭了,找不到版本号了的时候,还可以通过git relog 来查看提交的id

  注:如果版本回退,被回退的版本成为最新的,它之后的修改已经查看不到了,如果想回到未回退之前的版本,可以找到最后一个提交的commit_id,通过git reset --hard commit_id返回到初始版本

五、撤销修改

  撤销修改分成3中情况:

    1.只在工作区进行了修改,没有添加到暂存区(尚未执行git add **命令)

    2.添加到了暂存区,还没有提交到版本库(执行了git add **,还没有执行git commit -m"modified something")

    3.提交到了版本库,还没有推动到远程 (执行了git commit,没有执行git  push)

针对这三种情况,我们一 一来解决

情况1有两种方法:

  ①直接在工作区进行修

  ②当我们把某个文件修改了之后我们可以用git status命令查看

  

  可以看到git checkout -- <file>命令可以把本次修改撤销

情况2的撤销方法:

   当我们git add **之后,发现有问题,那我们还是可以通过git status来查看

  

  我们可以看到这里的命令git reset HEAD <file>,执行这个命令,就回到了情况1,也就是没有git add ** 之前,参照情况一之中的②方法撤销本次修改

情况3参照版本会退,git reset --hard HEAD^即可(必须是没有推送到远程的,即没有执行git push的)

六.删除文件

  通常情况下,我们删除文件的最直接的方式就是在工作区直接将文件删除,当然我们还可以通过rm <file>命令来删除文件

  但是如果这个文件之前已经提交到版本库了,我们在工作区直接删除,会版本库和工作区不一致的情况,这时候我们就要确定这个文件是确定要删除了,还是说不小心误删仍需要保留的

  如果是确定以及肯定要删除,则可执行git rm <file> 并执行git commit -m" ",这样就讲这个文件从版本库里也删除了

  但是如果是误删,这时候工作区已经没有了,但是不用担心,版本库里仍然有这个文件,我们可以通过执行git checkout -- <file>将误删的文件恢复

注:git checkout 其实是用版本库(版本库里包括这暂存区)的版本替换工作区的版本,无论是工作区的修改或者删除,都可以还原

*****************************我是重点分割线**********************

七.分支管理

  1.查看分支: git branch

  2.创建分支: git branch <branch_name>

  3.切换分支: git checkout <branch_name>

  4.创建+切换分支:git checkout -b <branch_name>

  5.合并分支: git  merge <branch_name> 基于当前分支,将<branch_name>上的内容合并到当前分支

  6.删除分支: git  checkout -d <branch_name>

     删除一个没有被合并的分支: git checkout -D <branch_name>

对于git merge的说明:

  git merge命令用于合并指定分支到当前分支

  

这里可以看到Fast-forward信息,说明本次合并是“快速合并”,也就是直接把master指向f分支的当前提交,所以合并速度很快。我们可以通过git log --graph命令可以查看分支合并图

  

Fast forward模式下,删除分支后,会丢掉分支的信息,但是要强禁用Fast  forward模式,Git就会在merge时生成一个新的commit,这样,从历史分支上就可以看出分支信息

git merge --no-ff <branch_dev>

这里需要注意的是,通过这种方式合并之后,界面会锁死,出现Please enter a commit message to explain why this merge is necessary...

退出的方法是:①按键盘上的I键 ②按键盘上的Esc键③输入:wq,按enter键退出(详情参考链接)

这是我们可以通过git log --graph再此查看分支合并图,发现和刚才不一样了

  

  7.隐藏分支:git stash <branch_name>

  开发实况: 在开发的过程中,突然发现有一个bug需要修复,一般来时我们会重新建立一个分支来修复bug,但是目前分支的上新增的内容还不能提交,这个时候我们可以将当前分支工作区里的内容添加到暂存区(git add <file>这里是必须的,否则git stash不生效),这样我们就可以git stash <当前分支>,现在我们可以新建一个分支,进行bug修复了。

  8.恢复隐藏:git stash apply 或者 git stash pop

  当我们的bug修复完成,我们要继续coding时,我们需要恢复现场,首先我们可以通过git stash list来查看我们隐藏的工作,通过git stash apply 恢复,但是回复后stash的内容并没有被删除需要使用命令git stash drop来删除;也可以通过git stash pop ,恢复stash时也把stash的内容删除了.  

posted @ 2018-01-09 14:44  祭孑  阅读(258)  评论(0编辑  收藏  举报