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的内容删除了.