Git 日常开发常用整理(二)

Git 日常开发常用整理(二)

日常开发当中,一些大型项目或者赶进度的项目,我们会多人合作开发,或者进行版本的迭代开发、线上BUG修复等等,对git熟悉的人来说代码的合并以及线上BUG的修复都是小问题,但是对前端小白git命令不熟的情况,难免会出现问题,下面的整理一些git代码回滚、暂存、查看提交历史等命令来作为补救

git commit

如果你的提交信息写错了且这次提交(commit)还没有推(push), 你可以通过下面的方法来修改提交信息(commit message):

git commit --amend --only -m 'xxxxxxx' 

如果你用 git commit -a 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。你就可以用下面的命令显示当前HEAD上的最近一次的提交(commit):

git log -n1 -p

git代码回滚

当某些特殊原因所导致需要代码回滚到上一次push或者某一次push时

首先我们需要查询分支提交历史,接着找到需要回滚的git历史所对应的版本号进行版本回退,最后做操作推送

git log 查看提交历史以及对应的版本号
git reset --hard commit_id 进行版本回退

也可以通过快捷命令

HEAD是指向当前版本的指针,HEAD^ 表示上一个版本,HEAD^^表示上上个版本

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

reset跟revert区别

reset回退至某个提交记录时,在此提交记录之后的修改都会被删除(不是真正的删除)

revert回退至某个提交记录时,会保留此提交记录后的修改

如1,2,3,4修改记录,你想保留第四次的修改但是要恢复第三次的修改

git log 查询版本号
git revert -n commit_id 选择第三次的版本号
git commit -m '恢复第三次修改'

git 提交历史也会变成 (HEAR -> master) Revert ‘恢复第三次修改’

实际上git把第三次修改从提交中剔除(还原)了,还保留第四次的修改并且产生新的commit_id,上面提到不是真正的删除的原因是因为git会把每次分支的修改记录保留下来

而使用git reflog show命令就可以查看完整的提交历史记录,只要有commit_id我们就能恢复任意版本的代码,在各版本之间来回穿梭

还有在开发中经常会遇到一个项目开发到一半或者修复BUG的过程要求去处理其他分支的问题,我们可以使用暂存(Staging)
我需要把暂存的内容添加到上一次的提交
git commit --amend
我只需要暂存一个文件的一部分
git add --patch filename.x

-p简写,这会打开交互模式,你将能够用S选项分隔提交;然而如果这次这个文件是新的,会没有这个选择,添加一个新文件时

git add -N filename.x

然后用e选项来手动选择添加的行

我们想要查看哪些行暂存了,哪些行只是保存在本地

git diff --cached

讲完常用的暂存操作(还有一些这里就不整理看场景自己百度)还有一个未暂存(Unstaged)

我想把未暂存的内容移动一个新分支

git checkout -b new-branch

我想把未暂存的内容移动到已有分支

git stash
git chechout mybranch
git stasg pop

当然暂存跟未暂存的操作还有很多,这里只是列出一些比较当用的,不过我还没试过暂存,只是之前同事有提到我就去看了这一部分的

分支

当一个项目很多分支的时候或者分支混乱的时候

我从错误的分支拉取了内容或者内容拉取到错误分支

这是另一种使用git reflog情况,找到再次错误pull之前的HEAD指向

git reflog 

重置分支到你所需要的提交就完成了

git reset --hard commit_id 

我想扔掉本地的提交,以便我的分支跟远程的保持一致

首先git status确认你的内容没有推送到远程

git reset --hard origin/mybranch
我需要提交到新分支但却推送到dev分支

此时保持在dev分支不切换新的分支,在dev下创建新的分支

git branch new-dev

把dev分支重置到前一个提交

git reset --hard HEAD^

HEAD^ 是HEAD^1的简写,也可以通过指定版本号重置

说到上面分支混乱会使一些粗心的人做了一些骚操作,我们也要清理一些完成作用的分支

例如master分支是生产环境,现在需要在生产环境修复BUG,但是dev有正在开发的功能,我们可以在master分支上创建hotfix分支,开发完成后合到dev进行测试,没有问题可以部署生产的时候,我们切换为master分支去mager hotfix分支的代码,这时候我们这条hotfix分支已经是完成作用

git push origin --delete hotfix 删除远程分支
也可以
git push origin :hotfix 博客说的
git branch -D hotfix 删除本地分支

Reflog

git reflog 的目的,就是记录对分支顶端的任何改变,但是只对本地分支起作用,并且是跟踪动作,没有任何改变的文件是不会被记录的
你如果把事情搞砸、Reset了错误的版本、合并错分支或者你一直都很棒棒但是我就是要回退以前那个状态,就可以使用git reflog来查看你本地的记录

心得总结

当然git的常用操作还有很多,为什么我单独拎这部分出来讲,就是因为有时候粗心或者项目需求亦或者改BUG很烦,不够仔细不够细心导致的问题踩的坑,当然也不是说你细心就完全用不到上面的这些操作,有可能客户、产品开发的需求说不要就不要,我们也会用到上面的命令,淋过雨所以给小白们撑伞,也欢迎指出不对的地方

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值