单身人士发展的Git

Dan*_*iel 2 git

我一直在努力学习并习惯版本控制,更具体地说是git.但是,我的开发团队目前(并且在可预见的未来)完全由我组成,因此,我对git的关注一直在尝试掌握分支和提交技术.

我已经看过并尝试了一些工作流程示例,例如git-flow.但是,我似乎无法真正掌握如何使用它们.例如,提交的频率和提交的内容有多少?什么时候我应该真正分支新功能?我经常发现自己正在编写一个新功能的情况下,突然意识到我需要修复以前的编码错误,或者说应该完成一个新功能,然后意识到我仍然会遗漏一些东西.

这导致一些混乱的分支和提交,这绝对没有帮助.我发现自己想知道有多少帮助版本控制.

我究竟做错了什么?或者不是用于单人开发的git /版本控制系统?

bdo*_*lan 8

如果您刚开始使用版本控制,对于单人项目,那么最初不要担心所有这些工作流程等.首先,习惯于提交.

你刚刚运行你的程序并测试一些东西,它有用吗?很好,承诺.要做一些你不太确定会有用的事情吗?承诺.尽早并经常提交.关于git的好处是提交是可撤销的,如果你选择了一个不好的地方提交(提示:如果它不编译,它可能是一个不好的地方 - 但有一些例外,一旦你感到舒服git rebase -i和git add -i(一种虽然是一个先进的工具,所以首先要习惯基础!(嵌套的括号很有趣!))).

现在,关于切换焦点 - git有很多有用的工具.

例如,如果你想修复一个bug,但已经有很多其他工作......

git stash save
Run Code Online (Sandbox Code Playgroud)

然后Git接受所有未提交的更改,保存它们,并恢复到上次提交.你可以修复bug,测试,提交,然后

git stash pop
Run Code Online (Sandbox Code Playgroud)

然后在错误修复之上重新应用所有这些更改.

如果你正在研究一个小功能,但后来意识到这实际上有点复杂,你可能不止一次......

git checkout -b mynewbranch
Run Code Online (Sandbox Code Playgroud)

你去了 - 你现在正在一个新的分支.你可以随时回到另一个分支机构

git checkout someotherbranch
Run Code Online (Sandbox Code Playgroud)

您可以与此一起使用git stash以保存未提交的更改,然后交换到另一个分支以执行完全不同的操作.当你想要回来时,git checkout mynewbranch.

作为一个稍微高级的工具,如果你有一个小错误修复,并且不想打扰整个存储的东西,你可以做

git add -i
# select what changes to include
git commit # commits only what you selected
Run Code Online (Sandbox Code Playgroud)

这要归功于git索引 - git add -i允许您从单个行级别选择从工作副本到索引的确切内容,然后git commit将其保存为提交.通过这样做,您可以非常快速,轻松地从一堆其他更改中删除小修复.但请注意,这意味着您刚刚提交了一些从未在该表单中编译或测试的内容; 因此,需要注意不要提交完全破坏的东西(通常应该避免提交完全破坏的代码,因为它会中断git bisect- 这是一种非常方便的工具,用于跟踪回归).

一旦习惯了这个基本流程,就可以开始添加一些流程了.例如,您可以v1.x仅为1.x系列保留错误修正分支.管他呢.使用适合您的工作流程.