这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战
🤞 个人主页:@青Cheng序员石头
🤞 粉丝福利:加粉丝群 一对一问题解答,获取免费的丰富简历模板、提高学习资料等,做好新时代的卷卷王!
分享一些生产过程中,使用Git管理代码过程中,需要解决的一些特定问题的解决方案。部分已经在生产开发环境测试过,能达到效果。
一、分支代码错误提交到Master分支
问题:我需要提交到一个新分支,但错误的提交到了Master。
解决方案
在master下创建一个新分支,不切换到新分支,master:
1 | (master)$ git branch my-branch |
把main分支重置到前一个提交:
1 | (master)$ git reset --hard HEAD^ |
HEAD^
是 HEAD^1
的简写,你可以通过指定要设置的HEAD
来进一步重置。
或者, 如果你不想使用 HEAD^
, 找到你想重置到的提交(commit)的hash(git log
能够完成), 然后重置到这个hash。 使用git push
同步内容到远程。
例如, master分支想重置到的提交的hash为a13b85e
:
1 | (master)$ git reset --hard a13b85e |
签出(checkout)刚才新建的分支继续工作:
1 | (main)$ git checkout my-branch |
二、不小心删除了分支
问题:不小心删除了我的某个分支,想恢复分支的数据。
解决方案:
如果你定期推送到远程, 多数情况下应该是安全的,但有些时候还是可能删除了还没有推到远程的分支。 让我们先创建一个分支和一个新的文件:
1 | (main)$ git checkout -b my-branch |
添加文件并做一次提交
1 | (my-branch)$ git add . |
现在我们切回到主(main)分支,‘不小心的’删除my-branch
分支
1 | (my-branch)$ git checkout main |
在这时候你应该想起了reflog
, 一个升级版的日志,它存储了仓库(repo)里面所有动作的历史。
1 | (main)$ git reflog |
正如你所见,我们有一个来自删除分支的提交hash(commit hash),接下来看看是否能恢复删除了的分支。
1 | (main)$ git checkout -b my-branch-help |
看! 我们把删除的文件找回来了。 Git的 reflog
在rebasing出错的时候也是同样有用的。
三、明确想删除一个分支
问题:明确的想删除一个无用的分支。
解决方案
删除一个远程分支:
1 | (main)$ git push origin --delete my-branch |
你也可以:
1 | (main)$ git push origin :my-branch |
删除一个本地分支:
1 | (main)$ git branch -D my-branch |
少年,没看够?点击石头的详情介绍,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!
本文转载自: 掘金