版本控制和Git策略?

版本控制和Git策略?,git,version-control,Git,Version Control,我使用git来维护某种版本控制,并跨多台机器同步我的工作,因为我确实倾向于在多台机器上工作。我是唯一一个处理我的代码的人 我可以用git做大部分的基础工作,例如git签出一个文件以将单个文件返回到早期状态,并使用git revert(我害怕使用git revert,因为我还没有完全理解它的一些复杂性)将整个项目返回到早期状态。我有时也会使用git分支将代码分岔到不同的方向,特别是在我不确定方向的情况下 然而,我对git的了解有点薄弱,我仍然倾向于在进一步工作时逐步重新保存源文件。e、 在我完成项

我使用git来维护某种版本控制,并跨多台机器同步我的工作,因为我确实倾向于在多台机器上工作。我是唯一一个处理我的代码的人

我可以用git做大部分的基础工作,例如git签出一个文件以将单个文件返回到早期状态,并使用git revert(我害怕使用git revert,因为我还没有完全理解它的一些复杂性)将整个项目返回到早期状态。我有时也会使用git分支将代码分岔到不同的方向,特别是在我不确定方向的情况下

然而,我对git的了解有点薄弱,我仍然倾向于在进一步工作时逐步重新保存源文件。e、 在我完成项目18.c时,我可能正在工作,在我完成代码的过程中,我已经完成了1…18。这是除了在处理文件时频繁执行git提交之外的,因此有效地,我有两种方法“回拨”我在项目中的工作。但是,这种增量文件编号方式无法很好地处理跨多个文件的代码,因为跟踪跨多个文件实现的功能太疯狂了。我怀疑,通过更加努力地创建封装并隐藏内部实现的自包含函数,可以更好地解决我的一些问题

人们经常建议对每个主要的新特性或代码段执行git提交,但是当我无法执行频繁的git提交时,如果我放弃了实现代码的特定方式,我通常会花费大量时间手动“退出”一段有缺陷的代码。我怀疑提前对代码进行更好的规划//设计有时可能会有所帮助,但通常很难完全预测什么会成为死胡同或错误代码


我正在寻找一种实用的版本控制策略,特别是在事情进展不顺利时提供帮助,并帮助调试有问题的部分。

如果你认真对待自己的工作习惯(比如如果你想为生活编写代码或为某个自由软件项目做贡献),最好习惯经常提交。提交应该仍然有一些逻辑,每写10行代码就有一个单独的提交是一种失礼。小型和逻辑提交很好地进行审查,或者,如果您遇到了回归


如果您需要有许多检查点,那么您可以为您正在处理的特性的测试套件提交一个检查点,并为测试套件的每个通过部分提交一个检查点。或者类似的,取决于你的工作风格。(有了Git,如果需要的话,你可以在发布更改时随时清理历史。)如果你发现这还不够,那你就是做错了。

如果你认真对待自己的工作习惯(比如如果你想为生活编写代码或为某个自由软件项目做贡献),最好习惯经常提交。提交应该仍然有一些逻辑,每写10行代码就有一个单独的提交是一种失礼。小型和逻辑提交很好地进行审查,或者,如果您遇到了回归


如果您需要有许多检查点,那么您可以为您正在处理的特性的测试套件提交一个检查点,并为测试套件的每个通过部分提交一个检查点。或者类似的,取决于你的工作风格。(如果需要,使用Git,您可以在发布更改时随时清理历史记录。)如果您发现这还不够,则说明您做错了。

问题的解决方案分为两个不同部分:

理解提交

你需要更好地理解承诺背后的想法以及最初的想法。理想情况下,提交必须与执行某些操作(如函数或某个部分的重构)的代码处于同一级别。因此,您需要经常提交,如果您没有这样做,您将丢失有关您的进度的信息,如果您进行了这些提交,这些信息将被记录下来。 为了更好地理解git的工作原理,我建议阅读

探索分支

如果您在同一个项目上处理不同的不相关功能,那么进行与彼此无关的连续提交可能会令人恼火。分支出现了,这是一个强大的功能,可以让您同时处理不同的想法,彼此独立(代码方面)。
您可以在上一个链接中找到有关如何分支等的信息。但是,这里还有一篇关于使用git分支的模型的文章,该模型对于具有多个功能的大型软件特别有用

您的问题的解决方案分为两个不同的部分:

理解提交

你需要更好地理解承诺背后的想法以及最初的想法。理想情况下,提交必须与执行某些操作(如函数或某个部分的重构)的代码处于同一级别。因此,您需要经常提交,如果您没有这样做,您将丢失有关您的进度的信息,如果您进行了这些提交,这些信息将被记录下来。 为了更好地理解git的工作原理,我建议阅读

探索分支

如果您在同一个项目上处理不同的不相关功能,那么进行与彼此无关的连续提交可能会令人恼火。分支出现了,这是一个强大的功能,可以让您同时处理不同的想法,彼此独立(代码方面)。 您可以在上一个链接中找到有关如何分支等的信息。但是,这里还有一篇关于使用git分支的模型的文章,该模型对于具有多种功能的大型软件特别有用