Git小命令

最近对git版本回退的git reset, git revert, git checkout 有点迷糊不解,所以把当前的心得记录下来,方便以后学习。

git中默认存在两个指针分别是HEAD和MASTER指针,HEAD指针一直指向当前所在的位置,可以指向任意分支。MASTER指针指向最新的master分支代码。

git reset –hard [commit]

git reset –hard [commit] 是将当前本地的版本回退到指定的commit版本时期,参数hard的意思是缓存区和本地的都会强制回退到那个版本(加上hard才是真正到全部回退,建议如此)。如果commit之后的版本已经提交到远程分支了,那么reset之后如果想要向远程分支push代码,还是需要拉回远程的代码。所以这种回退只能回退本地的分支,若想要改变远程分支,则只能强制更新远程分支,git push origin 远程分支 -f(不建议使用)。
git reset 直接回退的是本地head指针,将本地head指针指向要回退的commit这里。所以在回退到commit版本之后,本地head指针中在此之后提交的commit就会丢失,强制push到远程之后,远程的记录也会丢失。若想要找到可以用命令git reflog(保留一段时间,不是永久的) 查询。

这里写图片描述

git revert [commit]

git revert [commit] 该命令是将指定的commit版本提交的内容撤销掉(删除),并且会产生一次新的提交记录。commit之后提交的内容不会进行修改,会被保留。
所以git revert的作用就是删除一个commit提交的内容,并生成一个新的commit,但是这个版本依然在提交记录中。而git reset是之后提交的commit不会存在提交记录中,之后提交的commit的内容也不会存在。

这里写图片描述

git checkout [commit]

git checkout 命令是用来切换分支的,如果使用git checkout [commit]命令,会把当前head指针切换到commit这个分支,相当于创作了一个新分支。git push到远程其他分支相当于跟其他远程分支进行合并(慎用)。
一般可以使用git checkout来查看以前提交某个commit的代码,最好只是查看,而不做任何修改。

这里写图片描述

后续

如果正在添加新功能,而这个时候却要修改以前的bug,并要修复打包部署。而正在写的代码不需要部署该怎么办呢?这个时候我们可以将正在写的尚未提交的代码压栈,然后修改bug,打包,提交,然后将代码出栈。压栈的代码不会被打包和提交进去。

git stash

git stash的作用是压栈,将正在写尚未提交到本地仓库的代码压栈,这个时候控制台会恢复到写代码之前的状态,就好像在上次提交之后,没有修改过代码一样。

git stash pop

git stash pop的作用是将压栈的代码出栈,压栈过几次就需要出栈几次,出栈的代码会跟当前控制台的代码进行合并。

git reflog

git reflog 的作用是查看所有的记录。

git branch -a

git branch -a 的作用是用来查看所有的分支,远程和本地的。

git checkout -b 分支名

git checkout -b 分支名 创建和切换到某分支

git checkout 分支名 文件

git checkout 分支名 文件,将某分支的某文件覆盖该分支的该文件,是直接覆盖,并会直接add

git reset 文件

git reset 文件, 将某修改的文件从add中踢出,则该文件的状态回到未add的状态。

git push origin 本地分支:远程分支

git push origin 本地分支:远程分支 将本地分支push到远程分支

git pull origin 远程分支:本地分支

git pull origin 远程分支:本地分支 将远程分支拉到本地分支。

git log

git log 查看提交记录

git merge 分支名

git merge 分支名, 将某分支合并到当前分支。

Git小命令_第1张图片

你可能感兴趣的:(知识点)