0

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

我可以使用 git 完成大部分基础操作,例如 git checkout a file 将单个文件返回到早期状态,并使用 git revert (我害怕使用 git revert ,因为我还没有完全理解其中的一些复杂性)来返回整个项目到较早的状态。我有时也会使用 git branch 将代码分叉到不同的方向,特别是在我不确定方向的情况下。

然而,我对 git 的了解有些薄弱,当我进一步研究它时,我仍然倾向于继续逐步重新保存源文件。例如,当我完成代码时,我可能在 project18.c 上工作,在完成代码时已经经历了 1...18。这是在处理文件时频繁进行 git 提交的补充,因此有效地我有两种方法可以“回拨”我在项目上的工作。然而,这种增量文件编号不适用于分布在多个文件中的代码,因为跟踪跨多个文件实现的功能太疯狂了。我怀疑通过更加努力地创建封装的自包含函数,并从周围的函数中隐藏内部实现是解决我的一些问题的更优雅的解决方案。

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

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

4

2 回答 2

4

如果您认真对待自己的工作习惯(例如,如果您想为生活编写代码或为某些免费软件项目做出贡献),那么最好习惯于经常提交。提交中仍然应该有一些逻辑,对于您编写的每十行代码有一个单独的提交是一种失礼。如果您遇到回归,小的和逻辑的提交很适合审查或bisect 。

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

于 2012-10-15T08:20:37.463 回答
2

The solution to your problem comes in two different parts:

Understanding commits

You need to better understand the idea behind committing and the way it was thought of originally. A commit ideally has to be at the same level with a piece of code that does something (like a function or a refactoring of some part). So you need to commit often, and if you fail to do so, you will simply lose information on your progress that would have been recorded if you did those commits. I recommend reading http://git-scm.com/book for a better understanding of how git works.

Exploring branching

If you are working on different unrelated features on the same project, it may be annoying to do successive commits that have nothing to do with each others. Here comes branching, a powerful feature that lets you work on different ideas on the same time, independently on each other (code-wise). You can find informations on how to branch and so in the previous link. But also, here is an article about a model of working with git branches that is particularly helpful for large softwares with multiple features http://nvie.com/posts/a-successful-git-branching-model/

于 2012-10-15T08:26:15.450 回答