作为一个Git新手,我意识到,我一直在使用它,就好像它是颠覆。 例如,一直在努力掌握,不拉的变化等,这经常导致可以避免的手册中合并的情况下才在本地提交。 什么是使用Git的其他常见反模式?
Answer 1:
变化的大球
当你写提交信息,而你不知道要放什么东西在变化的单行摘要,它可能意味着你放太多的东西无关的单一提交。 更好分裂提交成更小的,使用“ git rebase --interactive
”和/或“ git add --interactive
”和朋友(如“ git stash --keep-index
”来测试藏变化)。
拥有单一的问题提交每将大大有助于试图找到使用“错误时git bisect
”。
Answer 2:
这比git的特异性比较一般,但我已经看到了承诺,如“缺陷修复”或“修复富”或“东西”的消息很多很多的项目。 不这样做,而是使用有意义的承诺像消息“组件FIZ:修复FOO错误[\ n \ NEXTRA资讯]”和“空白清理”。 你会感谢自己,当你不可避免地看着你的提交历史后,并不需要说“地狱,我的意思,当我承诺‘东西’?”
Answer 3:
重订其已经发布或合并从(然后重新发布该分支)的一个分支。 这样做将让每个人都恨你,因为它会导致可怕的问题,因为你刚刚改写历史,并要求那些谁从衍合预分支合并来解决你的底垫手动带来的问题的人。
另请参阅http://hades.name/blog/2010/03/03/git-your-friend-not-foe-vol-4-rebasing/了解详情。
Answer 4:
不使用git stash
场景:你对功能A.工作它采取了您约2天,你即将从它完成了一天。 你已经得到了很好的写代码,但还有更多的工作要做。 你的老板显示出来并说:“嘿,我需要的特征B现在。如果需要10秒。”
当然 - 10秒写出来,工作2天消失。 或2小时试图注释掉和黑客所有你写在过去的2天搞定一切恢复到工作状态的代码。
git stash
是这里保存的一天。 只需键入git stash
在命令行中,在项目的根,和所有最近的变化在“藏匿”,这是改变一叠去。 现在你又回到了那里你2天了,但你的工作不会丢失。 你让10秒的变化,将其签入,然后键入git stash pop
让你变回(从堆栈中删除它们)。
作为可能是显而易见的,如果你有一个可怕的一天,你可以藏匿多次,但显然你越是这样做,乐趣却少了合并可能是当你终于混帐藏匿弹出他们所有。 如果你成功地积累了大量藏匿在几个月的工作,你有git stash list
看他们了, git stash pop
和git stash drop
挑选哪些是值得带回的,哪些是最好的,只是折腾了, git stash clear
,如果你只藏可怕的想法。
Answer 5:
正如有人谁使用SVN很多最近开始使用Git的越来越多,我可以说我最糟糕的习惯,在做之前git commit
, git push
, git commit
, git push
, git commit
, git push
...
换句话说,总是推后,每犯,像我仍然使用SVN。
放弃这种习惯所需要的初步培训后,我的工作流程是加载速度更快。 其中一个内置的Git的恩赐是一个事实,即本地提交比远程犯如此之快。 另一个实惠是无法做到近乎恒定的远程提交时可能不会以后把你的腿断(尤其是如果它是一个小团队,即使它是一个大的团队)。
对我来说,这是那里是在SVN没有真正的比喻(不调用的JakubNarębski的“变化的大球”反模式)。
Answer 6:
从迁移等SVN一个大的仓库来一个大的git回购是一个明确的反模式。 该方法git的设计,你不能这样做部分检出,并且甚至承诺可能会很慢。 不如modularise并使用每个组件回购。 在每队至少,回购。 每个组织绝对不是回购。