github - 做 git add (and) commit 的最佳实践是什么
问题描述
我已经使用 github 几个月了。
我确实理解添加和提交的概念。但我从不区分添加和提交,我最终总是使用
混帐添加。&& git commit -m “评论”。
我可以看到有些人的工作流程与我相似(例如:Git add and commit in one command)
我看到它的方式,如果我完成了我的代码的第一个“外观”,我添加并提交它到 git,然后我再次开始编码,第二个“外观”然后会有类似“提取方法,简化调用”的注释”。但我从不添加而不提交。
您能否给我一个现实生活中的例子,其中添加和提交并不总是一起完成?
谢谢和最好的问候,史蒂夫
解决方案
Git 建议完成提交的方式是,每次更改都是原子的、逻辑的提交。换句话说,它代表一个逻辑更改(执行良好),并且整个测试套件在更改之前和之后都通过了。
添加和提交可能分开进行的一种情况是,当您正在完善提交时。您可能有一个可以运行的代码的初始版本,但很混乱或其中仍有调试代码。您可以将此更改添加到索引中git add
,同时继续在工作树中对其进行细化。如果你发现你破坏了东西,你可以回滚到索引中的版本,然后再试一次。另一方面,如果您发现某个更改更好,您可以再次添加它,直到您最终准备好提交。
对于这种情况,另一个同样有效的工作流程是进行多次提交,每次更改都是对上一次的改进,然后使用git rebase -i
or将它们压缩在一起git reset --soft
。你想做什么取决于你喜欢的开发风格;它们基本上都会产生相同的结果。
您可能希望git add
单独使用的另一种情况git commit
是您只想存储一些更改。您可以使用git add
将所需更改保留在工作树中,然后git stash --keep-index
将其余更改隐藏起来。
一个您没有问但可能在您脑海中的问题是为什么这两个功能是分开的。这是因为有时在开发时,您最终会从树中的多个逻辑提交中得到更改,并且您希望一次只提交其中的一部分,为额外的逻辑更改进行额外的提交。一次只能添加部分更改意味着您可以提交这些更改,然后添加更多更改并提交它们,依此类推。
推荐阅读
- vue.js - 如何将 codepen.io 示例复制到 .vue
- ignite - Apache Ignite 缓存到 SQL,反之亦然
- tensorflow - 将模型加载到 TensorFlow 服务容器中并使用 protobufs 与之通信
- amazon-dynamodb - AWS Amplify + Appsync - 是否可以使用@connection 转换级联删除相关数据?
- python-3.x - 如何在 beautifulsoup 中过滤掉缩略图附件?
- java - 使用 ECDSA 公钥验证 JWT 签名 - 解码签名字节时出错
- java - 如何使用java从csv文件的每一行中删除逗号
- php - 当所选行具有 NULL 值时,允许的内存大小已耗尽
- rest - 意外路径变量类型上的 400 与 404
- php - 为什么我不能写“
我正在尝试
PHP
,VSCode
但是当我输入<?PHP echo ("Something") ?>
我猜,打开和关闭 PHP 标记的颜色为红色,通常表示其中
**error**