Git 命令(3)

Git / 73人浏览 / 0人评论
以下文章来源于捡田螺的小男孩 ,作者捡田螺的小男孩

git reset

git reset的理解

git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本.

为了更好地理解git reset,我们来回顾一下,Git的版本管理及HEAD的理解

Git的所有提交,会连成一条时间轴线,这就是分支。如果当前分支是master,HEAD指针一般指向当前分支,如下:


假设执行git reset,回退到版本二之后,版本三不见了哦,如下:

git reset的使用

Git Reset的几种使用模式

git reset HEAD --file回退暂存区里的某个文件,回退到当前版本工作区状态git reset –-soft 目标版本号 可以把版本库上的提交回退到暂存区,修改记录保留git reset –-mixed 目标版本号 可以把版本库上的提交回退到工作区,修改记录保留git reset –-hard  可以把版本库上的提交彻底回退,修改的记录全部revert。

先看一个粟子demo吧,代码git add到暂存区,并未commit提交,可以酱紫回退,如下:

git reset HEAD file 取消暂存git checkout file 撤销修改

再看另外一个粟子吧,代码已经git commit了,但是还没有push:

git log  获取到想要回退的commit_idgit reset --hard commit_id  想回到过去,回到过去的commit_id

如果代码已经push到远程仓库了呢,也可以使用reset回滚哦(这里大家可以自己操作实践一下哦)~

git loggit reset --hard commit_idgit push origin HEAD --force

git revert

与git reset不同的是,revert复制了那个想要回退到的历史版本,将它加在当前分支的最前端。


当然,如果代码已经推送到远程的话,还可以考虑revert回滚呢

git log  得到你需要回退一次提交的commit idgit revert -n <commit_id>  撤销指定的版本,撤销也会作为一次提交进行保存


Git进阶之标签tag

打tag就是对发布的版本标注一个版本号,如果版本发布有问题,就把该版本拉取出来,修复bug,再合回去。

git tag  列出所有taggit tag [tag] 新建一个tag在当前commitgit tag [tag] [commit] 新建一个tag在指定commitgit tag -d [tag] 删除本地taggit push origin [tag] 推送tag到远程git show [tag] 查看taggit checkout -b [branch] [tag] 新建一个分支,指向某个tag



Git其他一些经典命令

git rebase

rebase又称为衍合,是合并的另外一种选择。

假设有两个分支master和test

      D---E test      / A---B---C---F--- master

执行 git merge test得到的结果

       D--------E      /          \ A---B---C---F----G---   test, master

执行git rebase test,得到的结果

A---B---D---E---C‘---F‘---   test, master

rebase好处是: 获得更优雅的提交树,可以线性的看到每一次提交,并且没有增加提交节点。所以很多时候,看到有些伙伴都是这个命令拉代码:git pull --rebase,就是因为想更优雅,哈哈

git stash

stash命令可用于临时保存和恢复修改

git stash  把当前的工作隐藏起来 等以后恢复现场后继续工作git stash list 显示保存的工作进度列表git stash pop stash@{num} 恢复工作进度到工作区git stash show :显示做了哪些改动git stash drop stash@{num} :删除一条保存的工作进度git stash clear 删除所有缓存的stash。

git reflog

显示当前分支的最近几次提交

git blame filepath

git blame 记录了某个文件的更改历史和更改人,可以查看背锅人

git remote

git remote   查看关联的远程仓库的名称git remote add url   添加一个远程仓库git remote show [remote] 显示某个远程仓库的信息

0 条评论

还没有人发表评论

发表评论 取消回复