用git还有一个好处,多次的激励自己

2013-09-12 17:24:52 +08:00
 jianghu52
以前听人说,用git有一个潜在的好处,可以慢慢的改变一个人的开发习惯,快速的小部分的迭代。把一个大的功能慢慢分解到一个个小的模块,一点一点的完成。现在终于有点感觉了。
接了一个很麻烦的任务,给了3个人/月。就我一个人在搞。现在就是一点一点的啃,慢慢的一个一个的解决。
每次完成一个很微小的功能,或者验证了某个写法是正确的,就git一次。心里非常的有底,哪怕失败了,代码被我改的稀烂,没问题,直接del掉,clone一个上个版本。
再一个本来心里觉得根本不能完成的东西,一点一点的分解,然后一点一点的实现。每git一次就是证明了自己前进了一步。这种感觉真好。
6470 次点击
所在节点    程序员
31 条回复
sethverlo
2013-09-12 17:27:36 +08:00
lz 这句「直接del掉,clone一个上个版本」。。。

你可以 git log 看版本然后 git checkout 过去;

也可以 git reset --hard xxx。。。
agassi_yzh
2013-09-12 17:32:27 +08:00
楼上正解
zhao
2013-09-12 17:32:39 +08:00
楼主也可以用分支
git checkout -b new_branch
如果满意,提交之后,可以合并到master
git checkout master
git merge new_branch
如果不满意,提交之后删掉分支也可以
git checkout master
git branch -D new_branch
weakish
2013-09-12 17:39:33 +08:00
妳这几乎任何一个VCS都可以做到,git的妙处是分支啊。

推荐 git flow 这个扩展,分支更方便。
gaicitadie
2013-09-12 18:28:58 +08:00
原来大家都用分支啊,原来我自己用分支都不好意思说的,怕别人说我菜,我用脚本做了一个自动给分支命名的功能,按当前时间命名,下面是截图

晕,不能截图,发文字吧:

gc@gc:~/mysite$ git branch
2013-07-24_16_51
2013-07-26_14_43_21
2013-07-29_15_33_38
2013-07-29_16_23_02
2013-07-29_16_26_09
2013-07-29_16_26_43
2013-07-30_12_53_45
2013-07-30_13_25_51
2013-07-30_13_45_29
2013-07-30_13_47_33
2013-07-30_18_08_10
2013-07-30_20_35_40
2013-08-07_18_13_20
2013-08-08_09_32_00
2013-08-22_17_23_32
2013-08-27_16_47_38
2013-08-27_17_02_31
2013-08-27_17_02_45
2013-08-27_17_19_12
2013-09-10_10_38_43
2013-09-10_15_39_18
* master
edward1992
2013-09-12 20:06:49 +08:00
分支可是git的绝杀啊
guangwong
2013-09-13 00:22:18 +08:00
一個人開發,分你妹的支
luikore
2013-09-13 00:27:53 +08:00
@guangwong 譬如做比较大的多次修改的时候
arron
2013-09-13 00:32:27 +08:00
@gaicitadie 你这个用分支来看历史就不用了吧,直接看log就可以checkout出历史代码...
lightening
2013-09-13 00:39:24 +08:00
@gaicitadie 分支不是这样用的……
修改历史,git log一下,拷贝版本号,checkout出来就行,完全没必要分支。
AnyOfYou
2013-09-13 00:40:14 +08:00
@gaicitadie 分支不应该用这种时间命名吧,失去了分支的意义。
julyclyde
2013-09-13 10:20:30 +08:00
@sethverlo 这样本地会残留一个dangling commit的。过几十天再git fsck才能删除
sethverlo
2013-09-13 10:50:31 +08:00
@julyclyde reset 我记得好像不会?git checkout 的话感觉更多就是为了看一下前一个版本是什么样子的(比如说刚才手贱删了样例代码结果自己不会写233。。
julyclyde
2013-09-13 14:24:35 +08:00
@sethverlo reset我不确定,没研究过;checkout古代版本是必然会dangling的,除非你能记住the latest commit hash再重新commit到最新,否则从checkout古代版本那一刻开始往后的就都找不到了。commit的指针是指向parent的,而不是指向child的,原理早就了现象
holy_sin
2013-09-13 14:37:43 +08:00
分享一个宏 lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %C(blue)%s%Creset %C(dim cyan)<%an>%Creset %C(dim white)(%ci)%Creset' --abbrev-commit

git lg 比较好看
RainFlying
2013-09-13 14:42:35 +08:00
心里非常的有底,哪怕失败了,代码被我改的稀烂,没问题,直接del掉,clone一个上个版本。

说得 SVN 不能一样的。
SVN 还可以只 checkout 出某一个目录,或者某个特定的文件。
如果用 Git。。。
你试试 git clone 一下 Linux 的 Kernel source 。。。
sethverlo
2013-09-13 16:28:23 +08:00
@julyclyde 其实我没看明白。。我刚做了个实验,不知道是不是您的意思?求详情?

> git log

commit 4fd52040a1945c5b46697b124b2c48993bd309c9
commit 45b8fc798b1670fbe67de6be436ec000f9c50a12
commit e6de0b4e5e2744f9f57376ef0cacf0636fc16e0a

> git checkout e4531c0dca230e8e4299848f96faf1c100d665ce

Note: checking out 'e4531c0dca230e8e4299848f96faf1c100d665ce'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

HEAD is now at e4531c0... create.html.erb deleted.

> git checkout product

Previous HEAD position was e4531c0... create.html.erb deleted.
Switched to branch 'product'

> git log

commit 4fd52040a1945c5b46697b124b2c48993bd309c9
commit 45b8fc798b1670fbe67de6be436ec000f9c50a12
commit e6de0b4e5e2744f9f57376ef0cacf0636fc16e0a
sethverlo
2013-09-13 16:29:58 +08:00
@julyclyde oops..刚才觉得信息太长删掉了一部分,补充一下,我 checkout 到的是第五条 commit。。我只写了三条。。
julyclyde
2013-09-13 16:41:01 +08:00
你有product这个branch name指向4fd52 所以还能找回来
如果没这个名字的话,你checkout到45b8或者e6de之后就回不来了
mengzhuo
2013-09-13 16:44:07 +08:00
看branch下面这两个才是神器
tig gitg

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/82197

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX