每天一个摸鱼小技巧之「高效使用Git」

文章介绍了在使用Git进行版本管理时遇到的问题,如切换分支报错、gitreset与gitrevert的区别、剪枝操作以及gitclone的技巧,并提供了相应的解决方案,强调了面对问题时积极解决的态度对程序员成长的重要性。同时提到了JavaScript与ES的学习笔记作为额外资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Git版本管理的项目在提交代码的时候自然免不了遇到一些问题,遇到问题的解决方式有两种:

  • 1.尽量避开,选择绕过,采用其他方式
  • 2.迎面而上,积极解决

不同的态度导致解决问题方式的不同,结果是一样的,但是第二种方式相对而言总会学到一些什么,进步更快,但解决问题花费的时间却更长一些。程序员来讲,尤其是初级,最好还是要克服一下畏难心理,因为你遇到的问题越多,说明你成长的机会越多。

今天就记录下我在代码提交过程中遇到的一些问题,一是好记性不如烂笔头,记下来以供日后遇到相似问题时能提供个解决思路,二来也是想跟大家交流分享一下,如果有其他比较经常遇到的Git问题,也可以评论区讨论。

1. 切换分支报错: refname 'xxx' is ambigous

出现这类错误的原因有很多,比如标签和分支名相同或者分支名称与某次提交中的SHA1前缀相同,用git show-ref <branch_name>命令查看带有<branch_name>的分支引用:

git tag new_tag old_tag

git tag -d old_tag

git push origin new_tag :<old_tag_path/old_tag> 

为了保证其他同事也移除了这个tag,需要通知他们运行剪枝命令:

git pull --prune --tags 

也可以通过在前面加上前缀来解决问题,比如要切到分支上:

git checkout heads/[ref-name] 

而如果是分支名和某次提交的commit_id的前缀相同,那么应该尽量避免这种情况,分支前面加个功能前缀更好,比如hotfix/<branch_name>

2.git reset还是git revert

两种都是回退commit的方式,用哪种更好呢?其实搞明白它俩的作用,再结合自己的需求,就不会有这个困扰了:

  • git revert是有记录的回退,执行之后会多出一条commit记录,告知其他人这里有回退操作
  • git reset是无记录的操作,会直接将之前的commit删掉,如果没有--hard标记,就不会删掉修改代码,另外如果之前代码已经推送到远端分支,reset之后需要强推git push -f

3.剪枝

在开发功能的时候由于团队协作或临时修复bug,可能会在远端建立多个分支,比如feat/1.1hotfix/1.0等,完成开发之后通过操作将远程仓库中的分支删除了,但本地仍存在多余的远端分支(remotes/origin开头),如果不删除,代码仍然可能提交到这样一个实际上不存在了的远端分支上,怎么办呢?git fetch --prune可以解决这个问题。运行一下这个命令,不存在的远端分支快照就会被清理掉。

如果需要在每一次git fetchgit pull命令之后都进行剪枝,那么可以将剪枝标记--prune设置为全局有效:

git config --global fetch.prune true 

4.git clone小技巧

在克隆项目时,如果我们只关心某个分支,则只需要克隆这个分支即可,比如master分支。

git clone -b master --single-branch [仓库地址] 

好处有二:一是减少克隆时间,而是本地分支清楚明确,没有大量多余的origin/xxx分支

暂时就这么多,后续再更新吧~

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值