【问题标题】:What is the best practice of doing git add (and) commit做 git add (and) commit 的最佳实践是什么
【发布时间】:2019-09-02 12:37:58
【问题描述】:

我已经使用 github 几个月了。

我确实理解添加和提交的概念。但我从不区分 add 和 commit,最后我总是使用

混帐添加。 && git commit -m "cmets"。

我可以看到有些人的工作流程与我相似(例如这里:Git add and commit in one command

我的看法,如果我完成了我的代码的第一次“查看”,我添加并提交到 git,然后我再次开始编码,第二次“查看”然后会有类似“提取方法”的注释,简化调用”。但我从不添加而不提交。

能否请您举一个现实生活中的例子,其中 add 和 commit 并不总是一起完成?

谢谢和最好的问候,史蒂夫

【问题讨论】:

  • “最佳实践”是一种意见。没有理由提交每个更改(除非您重新设置基准,否则提交历史可能是不必要的混乱,这会带来一系列潜在问题)。提交表示“这是我在此评论中记录的完整工作单元”。

标签: github commit


【解决方案1】:

Git 建议完成提交的方式是,每次更改都是原子的、逻辑的提交。换句话说,它代表一个逻辑更改(执行良好),并且整个测试套件在更改前后都通过了。

添加和提交可能分开进行的一种情况是,当您正在完善提交时。您可能有一个可以运行的代码的初始版本,但很混乱或其中仍有调试代码。您可以使用git add 将此更改添加到索引中,同时继续在您的工作树中对其进行细化。如果你发现你破坏了东西,你可以回滚到索引中的版本,然后再试一次。另一方面,如果您发现某个更改更好,您可以再次添加它,直到您最终准备好提交为止。

对于这种情况,另一个同样有效的工作流程是进行多次提交,每次更改都是对上一次的改进,然后使用 git rebase -igit reset --soft 将它们压缩在一起。你想做什么取决于你喜欢的开发风格;它们基本上都会产生相同的结果。

您可能希望将git addgit commit 分开使用的另一种情况是您只想存储一些更改。您可以使用git add 将您想要的更改保留在工作树中,然后使用git stash --keep-index 将其余更改隐藏起来。

您没有问过但您可能会想到的一个问题是为什么这两个功能是分开的。这是因为有时在开发时,您最终会从树中的多个逻辑提交中得到更改,并且您希望一次只提交其中的一部分,为额外的逻辑更改进行额外的提交。一次只能添加部分更改意味着您可以提交这些更改,然后添加更多更改并提交,等等。

【讨论】:

    【解决方案2】:

    能否请您举一个现实生活中的例子,其中 add 和 commit 并不总是一起完成?

    当你添加补丁时。

    git add -p 将交互式地让您在索引和工作树之间选择大块补丁并将它们添加到索引中。

    这通常是逐个文件增量完成的。
    然后,经过审核,您提交。

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 2018-06-14
      • 2017-12-07
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多