git 添加(和)提交的最佳做法是什么
What is the best practice of doing git add (and) commit
我已经使用 github 几个月了。
我理解添加和提交的概念。但我从不区分添加和提交,最后我总是使用
git add . && git commit -m "comments".
我可以看到有些人的工作流程与我相似(例如这里:Git add and commit in one command)
我的看法是,如果我完成了第一个 "look" 代码,我将其添加并提交到 git,然后我再次开始编写代码,第二个 "look" 然后会有像 "extract method, simplify call" 这样的评论。但我从不在没有提交的情况下添加。
能否请您举一个现实生活中的例子,添加和提交并不总是一起完成?
谢谢并致以最诚挚的问候,史蒂夫
Git 建议提交的方式是每个更改都是原子的、逻辑的提交。换句话说,它代表了一个逻辑更改(执行良好)并且整个测试套件在更改前后都通过了。
可以单独完成添加和提交的一种情况是当您正在完善提交时。您可能有一个可以运行的代码的初始版本,但是很混乱或者其中仍然包含调试代码。您可以使用 git add
将此更改添加到索引,同时继续在您的工作树中优化它。如果你发现你弄坏了东西,你可以回滚到索引中的版本并重试。另一方面,如果您发现一个更改更好,您可以再次添加它,直到您最终准备好提交。
对于这种情况,另一个同样有效的工作流程是进行多次提交,每次更改都是对上一次的改进,然后使用 git rebase -i
或 git reset --soft
将它们压缩在一起。你想做什么取决于你喜欢的开发风格;它们基本上都会产生相同的结果。
您可能希望将 git add
与 git commit
分开使用的另一种情况是您只想隐藏一些更改。您可以使用 git add
将您想要的更改保留在您的工作树中,然后 git stash --keep-index
将其余更改隐藏起来。
一个您没有问但可能在您脑海中的问题是为什么这两个功能是分开的。这是因为有时在开发时,您最终会从树中的多个逻辑提交中进行更改,而您只想一次提交其中的一部分,从而为其他逻辑更改进行额外的提交。能够一次仅添加部分更改意味着您可以提交这些更改,然后添加更多更改并提交它们,依此类推。
Could you please give me an example from real life experience, where add and commit does not always be done together?
添加补丁时。
git add -p
将以交互方式让您在索引和工作树之间选择大量补丁并将它们添加到索引中。
这通常是逐个文件逐步完成的。
然后,在审核之后,您提交。
我已经使用 github 几个月了。
我理解添加和提交的概念。但我从不区分添加和提交,最后我总是使用
git add . && git commit -m "comments".
我可以看到有些人的工作流程与我相似(例如这里:Git add and commit in one command)
我的看法是,如果我完成了第一个 "look" 代码,我将其添加并提交到 git,然后我再次开始编写代码,第二个 "look" 然后会有像 "extract method, simplify call" 这样的评论。但我从不在没有提交的情况下添加。
能否请您举一个现实生活中的例子,添加和提交并不总是一起完成?
谢谢并致以最诚挚的问候,史蒂夫
Git 建议提交的方式是每个更改都是原子的、逻辑的提交。换句话说,它代表了一个逻辑更改(执行良好)并且整个测试套件在更改前后都通过了。
可以单独完成添加和提交的一种情况是当您正在完善提交时。您可能有一个可以运行的代码的初始版本,但是很混乱或者其中仍然包含调试代码。您可以使用 git add
将此更改添加到索引,同时继续在您的工作树中优化它。如果你发现你弄坏了东西,你可以回滚到索引中的版本并重试。另一方面,如果您发现一个更改更好,您可以再次添加它,直到您最终准备好提交。
对于这种情况,另一个同样有效的工作流程是进行多次提交,每次更改都是对上一次的改进,然后使用 git rebase -i
或 git reset --soft
将它们压缩在一起。你想做什么取决于你喜欢的开发风格;它们基本上都会产生相同的结果。
您可能希望将 git add
与 git commit
分开使用的另一种情况是您只想隐藏一些更改。您可以使用 git add
将您想要的更改保留在您的工作树中,然后 git stash --keep-index
将其余更改隐藏起来。
一个您没有问但可能在您脑海中的问题是为什么这两个功能是分开的。这是因为有时在开发时,您最终会从树中的多个逻辑提交中进行更改,而您只想一次提交其中的一部分,从而为其他逻辑更改进行额外的提交。能够一次仅添加部分更改意味着您可以提交这些更改,然后添加更多更改并提交它们,依此类推。
Could you please give me an example from real life experience, where add and commit does not always be done together?
添加补丁时。
git add -p
将以交互方式让您在索引和工作树之间选择大量补丁并将它们添加到索引中。
这通常是逐个文件逐步完成的。
然后,在审核之后,您提交。