git gui fetch不到文件_为什么我只教命令行Git?因为我想长命百岁

我推荐命令行Git的技术上的理由很充足:

  • 命令行Git功能强大,GUI的封装只是打包了一小部分功能
  • 从命令行开始基础扎实,以后可以随时切换到任何GUI工具
  • 命令行Git也可以有很多操作可优化,效率比GUI只快不慢

但是,我知道很多人还是不以为然。他们的想法我也完全理解,“我只要能用简单友好的界面快速上手Git,对更复杂的操作我没兴趣”。

现在我要给出一个无可辩驳的非技术理由,我有100%的信心,一旦给出这个理由,你会承认自己还是太嫩,你也绝对会同意只推荐命令行Git是久经沙场的老兵才能做出的明智之举。

理由就是,我想长命百岁; 我祝读者身体健康;我也希望把Git集成到编辑器里的程序员和产品经理万寿无疆(微软,说的就是你)

我教命令行Git,必从三个命令开始(其他教程也一样),

  • git init初始化一个仓库
  • git add .把项目中所有文件加入commit
  • git commit -m "first import" commit提交到仓库

用户是绝对安全的,不会丢失任何文件。我也是绝对安全的,因为不会有人拿我做替罪羊。

如果是集成了Git的编辑器,一个菜鸟按钮乱按两下,什么鬼都可能碰到。

你以为我在空谈?

来来来,我给你看一个VSCode用户的悲惨遭遇。对微软来说几乎是丑闻了,所以他们毫不犹豫的封杀了此事。

https://web.archive.org/web/20170817095211/https://github.com/Microsoft/vscode/issues/32405​web.archive.org

此用户是出于好奇安装了VSCode。通过其界面执行了git init后。有意无意按了Clean All按钮。这一步我的理解是是执行了git clean -d -f命令,会把所有未加入git的文件删除。

悲惨的是此人没有意识到clean在Git的含义(坦率地说不怪他,我用了Git很久也不知道此命令)。所以他项目中的5000多个文件全部被删除了。

他还徒劳地去Windows的垃圾箱恢复那5000个文件。现实是残酷的。git clean恰恰不调用垃圾箱的 API。所以他永远地丢失了整个项目。

他的反映可想而知,

bc39c5f684518e6c9ab3319110681bdf.png
如果我

翻译成中文就是连说100个cao啦

此事的教训,

  • 别好为人师教别人Git
  • 一定要教只教命令行Git
  • VSCode上Git相关的按钮没事别瞎按

更新:

  • 觉得主人公太菜的同学过于苛刻了。没有人天生就精通Git的,都有一个从普通人到高手的过程。好的UI设计保证普通人也不会出现重大错误。如果能把我给的链接读一下的话,里面给出了证据,证明还有许多其他VSCode用户也误删除了文件。这些用户也一致批评微软的UI设计有问题。成年人还是要有同理心,你Git很精通,但是有一天老板让你使用perforce,你也可能遇到同样的问题。
  • 觉得这是Git的锅而不是VSCode的锅就是逻辑混乱了。Linus只用命令行Git,他设计Git保证命令行的工作流不出事故就合格了。至于第三方编辑器VSCode如何整合Git完全不受他控制。一个最简单的道理,Git比VSCode先出现。Linus是人又不是神,他不可能预知未来第三方UI是如何集成Git的。Git在这里就是一个底层库的作用,正确的输入得到正确的输出就完成使命了。不客气地说,Git的UI客户端多如牛毛,搞出事故来的屈指可数。
  • 我现在意识到该用户也有可能是第一步执行了git add,然后执行了git reset HEAD --hard。效果和git clean -d -f是等价的。我的论点还是成立的git cleangit reset --hard这类高级命令就不应该放到UI

小结:

我感觉还是小结一下本文比较好。有些评论显然阅读理解出了偏差。

本文的中心论点就是文章的标题“我只教命令行Git”。除了开头罗列了一些常见的理由。我给出了一个额外的理由。GUI操作有一定的随机性。新手可能误按某个按钮导致误删除文件造成惨重损失。我给出了VSCode的作为实例。所以我的理由是有现实依据的,不是闭门造车。

显而意见,只教命令行没有这些风险。因为命令行的手册本质是“线性”的。高级的危险的命令都在手册的后面,教学的惯例也是从手册开头的简单命令开始教起。高级命令又有很多繁琐的option要输入。所以小白绝不可能误输入高级的危险的命令。

且教命令行还有我开头提到额外好处。风险为零,受益很大,所以作为老师我只推荐git。

以下是对我文章的误读,

误读: 我对微软有仇恨偏见,所以在恶意攻击微软,劝大家别用VSCode

解释: 别别别。我就是个中年大叔,想开个VSCode/Emacs/Vim教程挣点小钱。我也公开了很多VSCode的视频教程。怎么可能劝大家不用VSCode。我奉行”拿来主义“,VSCode做的好的地方我赞扬,做的差的地方我批评。本质就是专栏的名字显示的,“提高编程效率”

误读:微软封杀此issue是谣言,THIS THING DELETED 3 MONTHS OF WORK!!!! · Issue #32405 · microsoft/vscode 可访问。

解释:删除过后来被恢复了。见 Issue 32405 has disappeared · Issue #32884 · microsoft/vscode, 看VSCode经理Sean McBreen的解释。微软的程序员又说是用户自己删除的(I saw that you have deleted another issues · Issue #32797 · microsoft/vscode)

误读: 我对Git的GUI客户端有偏见

解释:文章开头说得很清楚了“以后可以随时切换到任何GUI工具”

误读: 案例中的那个VSCode用户活该,因为他太菜了,正常人不会犯这个错误

解释:我不同意这个观点。原因也说明了。我本人也是从小白开始的。说来惭愧。我在第一家公司工作的时候,我老板是复旦计算机系的,我是交大试点班毕业的。我们项目一年没有用版本控制。一开始菜没有关系,只要不断成长,完全可以在IT业干下去。鲁迅的“未有天才之前”中学应该学过。天才都是从菜鸟成长的。

误读:小概率事件可忽略

解释:我必须对我的读者负责。1%可能性的事故,如果我有1000个读者,那么就有10个读者可能受损失。我要100%保证所有读者都能安全顺利的学到知识而不会遭到任何事故。所以这也是我为什么推荐命令行Git的原因

误读:此案例微软没错

解释:微软UI设计有失误。实际上用户已提到解决方案了,就是把要删除的文件默认往垃圾箱发送一个备份。这至少是Windows软件的传统。如果我提解决方案的话,就是不要有这个discard按钮,内置一个terminal让高级用户自己玩就可以了。

误读:某某GUI就好得很,我用了从来没有问题,没有必要学命令行

解释:我已说明了初学者命令行误操作的概率要比任何GUI小得多。此外还有我文章开头罗列的很多好处。你觉得你不需要学习Git命令行,也许是因为你“不知道自己错过了多少高级技巧”

git-grep可以在项目根目录中搜索指定词。 这属于世界上最快的文本搜索之一了。而且默认自带,不需要任何配置。如果你的项目是全英文的话LC_ALL=C git grep再提速4倍。

git ls-tree -r HEAD --name-status用来在Git项目中找文件路径,快如闪电,不需要配置。

git --no-pager show --pretty=format:'%h %s (%an)' --name-only HEAD找到上一个commit提交的文件。可以用来快速打开编辑过的文件。

cd $(git rev-parse --show-toplevel)直接回到项目根目录

git shortlog -s 统计程序员对项目贡献

我从未刻意钻研这些技巧,就是不排斥命令行,网上谁公布自己的git命令行技巧时去扫一眼,自然而然就会了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值