1
sethverlo 2013-09-12 17:27:36 +08:00
lz 这句「直接del掉,clone一个上个版本」。。。
你可以 git log 看版本然后 git checkout 过去; 也可以 git reset --hard xxx。。。 |
2
agassi_yzh 2013-09-12 17:32:27 +08:00
楼上正解
|
3
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 |
4
weakish 2013-09-12 17:39:33 +08:00
妳这几乎任何一个VCS都可以做到,git的妙处是分支啊。
推荐 git flow 这个扩展,分支更方便。 |
5
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 |
6
edward1992 2013-09-12 20:06:49 +08:00
分支可是git的绝杀啊
|
7
guangwong 2013-09-13 00:22:18 +08:00
一個人開發,分你妹的支
|
9
arron 2013-09-13 00:32:27 +08:00
@gaicitadie 你这个用分支来看历史就不用了吧,直接看log就可以checkout出历史代码...
|
10
lightening 2013-09-13 00:39:24 +08:00
@gaicitadie 分支不是这样用的……
修改历史,git log一下,拷贝版本号,checkout出来就行,完全没必要分支。 |
11
AnyOfYou 2013-09-13 00:40:14 +08:00 via Android
@gaicitadie 分支不应该用这种时间命名吧,失去了分支的意义。
|
13
sethverlo 2013-09-13 10:50:31 +08:00
@julyclyde reset 我记得好像不会?git checkout 的话感觉更多就是为了看一下前一个版本是什么样子的(比如说刚才手贱删了样例代码结果自己不会写233。。
|
14
julyclyde 2013-09-13 14:24:35 +08:00 1
@sethverlo reset我不确定,没研究过;checkout古代版本是必然会dangling的,除非你能记住the latest commit hash再重新commit到最新,否则从checkout古代版本那一刻开始往后的就都找不到了。commit的指针是指向parent的,而不是指向child的,原理早就了现象
|
15
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 比较好看 |
16
RainFlying 2013-09-13 14:42:35 +08:00
心里非常的有底,哪怕失败了,代码被我改的稀烂,没问题,直接del掉,clone一个上个版本。
说得 SVN 不能一样的。 SVN 还可以只 checkout 出某一个目录,或者某个特定的文件。 如果用 Git。。。 你试试 git clone 一下 Linux 的 Kernel source 。。。 |
17
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 |
18
sethverlo 2013-09-13 16:29:58 +08:00
@julyclyde oops..刚才觉得信息太长删掉了一部分,补充一下,我 checkout 到的是第五条 commit。。我只写了三条。。
|
19
julyclyde 2013-09-13 16:41:01 +08:00 1
你有product这个branch name指向4fd52 所以还能找回来
如果没这个名字的话,你checkout到45b8或者e6de之后就回不来了 |
20
mengzhuo 2013-09-13 16:44:07 +08:00
看branch下面这两个才是神器
tig gitg |
22
gaicitadie 2013-09-13 17:37:46 +08:00
|
23
julyclyde 2013-09-13 17:53:03 +08:00
@sethverlo 我刚才说过了啊,指针是指向历史的,而不是指向未来的。如果某个commit没有branch name、tag、HEAD指向,且比当前HEAD更新,就是正常手段访问不到的。可以用git-fsck找到
|
24
cloudzhou 2013-09-13 17:59:25 +08:00
@gaicitadie 使用自动脚本生成分支这个没有意义吧,我使用脚本就能自动给你列出log的每天commit,你这是抢了版本控制的功能啊
|
28
gaicitadie 2013-09-13 18:15:56 +08:00
@cloudzhou 谢谢指教,涨姿势了,刚才试了试,生成分支确实多此一举,需要的时候每个log都可以生成一个分支的
|
29
teloon 2013-09-14 17:19:56 +08:00
|
31
myoula 2013-09-14 20:15:15 +08:00
mark一下
|