我之前想干个啥就重开分支.
才学会 stash
1 FrankAdler 2022-08-13 10:15:07 +08:00 via iPhone ![]() 临时切走,保留现场,或者想了一个新方案,之前的想保留下来 |
2 renmu 2022-08-13 10:15:23 +08:00 via Android ![]() 你原来在 dev1 分支开发,然后突然要去 dev2 改个 bug ,但是 dev1 分支没开发完不想提交,那就先 stash |
![]() | 3 xingyue 2022-08-13 10:19:30 +08:00 via Android ![]() 我一般选择 push 上去,后期再 rebase + push -f ,感觉这样比较保险,保证已有的修改不会掉。 |
![]() | 4 AV1 2022-08-13 10:20:44 +08:00 via Android ![]() 你正在开发 1.2.0 版本,突然汇报 1.1.0 有 bug 需要紧急修复。此时你的工作空间已经充斥 1.2.0 的杂乱状态了,如果想要保存当前状态,然后清理工作空间,可以考虑办法就是用 stash 。 |
![]() | 5 izzy27 2022-08-13 10:42:21 +08:00 ![]() 保存代码用,用 git stash 就不用走一遍提交的流程了 |
![]() | 6 PendingOni 2022-08-13 10:52:12 +08:00 via Android 可以先 stash 贮存一下现有代码的更改 然后 pull 下当前分支的新内容再 unstash 慢慢地手动 merge 差异的地方 |
![]() | 7 bruce0 2022-08-13 11:12:48 +08:00 楼上说的都很清楚了, 我觉得请有用的,我经常用 |
8 daimubai 2022-08-13 11:36:43 +08:00 ![]() 很常用。尤其是同时一个人负责多个业务模块,经常写到一半要切个分支去改个东西。 还有就是 先 stash 再 pull ,比先 commit 再 pull 可以少个 merge 记录 还有就是 尽量别用 rebase 和 push -f ,碰到这样的“打死” |
![]() | 9 wudicgi 2022-08-13 11:37:34 +08:00 ![]() 我用 TortoiseGit 时基本不用这个功能,怕出错,感觉不如建个新的本地临时分支提交一下保险 |
![]() | 10 Edsie 2022-08-13 11:40:18 +08:00 ![]() 有 Stash 需求的时候,基本都用 IDEA 的 Shelf ,感觉比 Stash 好用 |
![]() | 11 340244120w 2022-08-13 11:43:42 +08:00 via iPhone ![]() 我主要就是本地开发的时候,配件文件里大家自己的数据库啊 工作目录啥的可能不一样,再加上不同分支配置文件结构业可能不一样。又不能把自己的提交上去。用 stash 或者 idea 的 shelve [比 stash 好用] 就可以暂存自己的配置文件。哪个分支要用就把对应的文件 unshelve 上去 |
![]() | 12 Rocketer 2022-08-13 12:03:44 +08:00 via iPhone ![]() 从来不用,我都是直接 commit ,并在备注中记录正在做什么,还需要做什么等详情。否则万一离开比较久,回来都不知道干什么了。 |
![]() | 13 weakish 2022-08-13 12:26:23 +08:00 有的候 stash 了忘了之前 stash ,所以我也是更多地像 #12 那直接 commit ,等後重新切回完後再 amend 下,以保持史整。 有一替代方案是用 worktree 新一目,可以完整保持。 或者也可以在 shell 的命令提示符加上示下是否有 stash 的。 |
![]() | 14 WhateverYouLike 2022-08-13 12:35:01 +08:00 楼上没有用 Github Desktop 的吗?在这个里面,随便切一下分支,它都会问你:“当前的改变是要留在当前分支呢,还是带到你要切过去的分支?”,留在当前分支的话,它就会帮你 stash |
![]() | 15 rekulas 2022-08-13 12:36:13 +08:00 同 12 13 stash 很少用都是 commit 代替,因为 commit 功能更完善,也有详细的小版本记录,比如我临时离开 commit 下,处理了点其他工作又回来修改会再次临时离开 commit append,每次 commit 也可以查看差异,所以用不上 stash |
16 Knuth 2022-08-13 12:37:57 +08:00 git stash save "stash 也可以备注" |
![]() | 17 crysislinux 2022-08-13 12:40:52 +08:00 via Android 如果要去别的分支我都一般 commit ,message 就写个 saved ,回来之后接着干 reset 一下。我感觉这样好更不容易搞错。 |
![]() | 18 creanme 2022-08-13 13:26:25 +08:00 不知道为啥有时候 git stash ,然后 git pull ,再 git stash pop ,某些文件会变成删除的状态 |
19 yeqizhang 2022-08-13 13:30:08 +08:00 via Android 如果用 idea ,建议用 shelf ,stash 只能把所有未提交的处理。shelf 可以拆分选择指定的处理 |
![]() | 20 wcp1231 2022-08-13 13:34:32 +08:00 ![]() 如果用 oh-my-zsh 那么可以用 gwip 和 gunwip 替代,很方便 |
![]() | 22 imycc 2022-08-13 13:55:10 +08:00 就是暂存的意思。一般是 A 功能提测,QA 反馈了 Bug ,而我正在 B 功能的分支上开发的时候,stash 一下,切过去处理完,再切回来继续。用的蛮多的。 没试过切回来之后拖太久没 pop 会怎样,对我来说它就是“暂存”的概念,简单地用是最好的。 |
![]() | 23 jaoyina 2022-08-13 13:57:03 +08:00 我觉得挺有用的 |
![]() | 24 hello2090 2022-08-13 13:59:52 +08:00 via iPhone 你改了 10 来个文件,你现在想把改动比较大的一个恢复到原始状态。你怎么搞? |
![]() | 25 jokeface 2022-08-13 14:20:58 +08:00 假如在 dev1 分支 stash 跑的 dev2 分支 pop 会发生啥 |
![]() | 26 molvqingtai 2022-08-13 14:33:16 +08:00 via Android 用的挺多,唯一的缺点就是不能写备注,经常会搞忘了当时 stash 的啥 |
![]() | 27 dangyuluo 2022-08-13 14:39:20 +08:00 没干完活又不想 commit 的时候 |
![]() | 28 unco020511 2022-08-13 14:51:35 +08:00 ![]() 可以简单的理解为「 git 在本地为你提供的临时存储空间,与工作空间关联,与分支不关联」.使用 idea 时,idea 提供了 shelve 功能可以作为增强型 git stash 使用 |
29 Jooooooooo 2022-08-13 15:31:32 +08:00 我一般的用法是忘记切分支的时候, 先 stash 再切到正确的分支, 再 pop |
![]() | 30 andyJado OP @molvqingtai 我用的 gitui, 能写备注的 |
![]() | 31 Felldeadbird 2022-08-13 16:10:13 +08:00 临时放代码用的。有时候要拉新同步别人代码。 刚用 git 时经常用,后面我习惯了 commit 到本地一个临时分支。因为有时候忘记了 stash |
![]() | 32 wangsongyan 2022-08-13 16:24:00 +08:00 via iPhone 不知道是不是我仓库的原因,每次 git stash save/pop 时都很慢 |
33 liuhuan475 2022-08-13 17:16:53 +08:00 切分支用的吧 |
![]() | 34 koala9527 2022-08-13 17:18:59 +08:00 紧急处理线上 BUG ,最近才学会,切分支还是有点麻烦。stash 还是方便些。 |
![]() | 35 zhuzhibin 2022-08-13 17:21:13 +08:00 经常用 |
36 Rache1 2022-08-13 17:33:50 +08:00 @molvqingtai 可以写,跟 commit 一样,加 m 参数 |
![]() | 38 hello2090 2022-08-13 17:48:36 +08:00 @molvqingtai git stash save ‘comment‘ |
![]() | 39 Gota 2022-08-13 18:10:21 +08:00 用 Intellij 的话也可以试试它的 Shelve/Unshelve, 同样的效果但不依赖于特定 VCS. |
40 simonlu9 2022-08-13 18:23:42 +08:00 ![]() 还是太麻烦啦,频繁切换分支,试试 worktree 吧 |
![]() | 41 wonderfulcxm 2022-08-13 18:24:43 +08:00 via iPhne 我也没用,直接 commit 到新的分支。stash 后如果做了修改,再切回来有点奇怪。还不如处理两个 commit 的冲突。 |
![]() | 42 molvqingtai 2022-08-13 19:16:43 +08:00 |
43 kwrush 2022-08-13 19:55:07 +08:00 via iPhone 我主要是同步主分支临时保存下,还有临时去修 bug 保存一下当前进度。commit 会跑一遍 git hook ,一是慢,二是代码没写好只能忽略错误 |
![]() | 44 creanme 2022-08-13 19:58:58 +08:00 @hello2090 应该都可以吧,apply 不会动 stash 里面保存的,而 pop 是删除 stash 里面保存的,应用到现在目录。 |
45 Slurp 2022-08-13 20:03:33 +08:00 我又来宣传 gupa 了: > where gupa gupav: aliased to git pull --rebase --autostash 从远程这样拉的话,能够避免额外的 merge 。--autostash 选项相当于 在 git pull --rebase 之前 git stash ,之后 git pop 。 |
46 lovelylain 2022-08-13 20:35:41 +08:00 via Android 个人觉得不如 commit 好用,stash 后 merge 了其他提交,再 pop 的时候很容易冲突,解决冲突后还得单独 drop 掉,不然后面容易忘了 stash 究竟有没有合并,是哪个分支的。用 commit 就不会有这些问题,临时提交可以用 reset 还原成修改态 |
![]() | 47 Roojay 2022-08-13 21:03:42 +08:00 via Android 使用 git-svn 的时候,这个就是神器。本地 git commit 完成之后 git svn dcommit 推送到 svn 仓库之前使用缓存不需要提交的文件 |
![]() | 48 hello2090 2022-08-13 21:21:05 +08:00 @creanme 哦 那有可能,我一般不 pop, 丢掉是肯定的,从名字就可以看出来,不过确实有可能会 apply 上去。 |
![]() | 49 ooops 2022-08-13 21:33:48 +08:00 是这样,你可以先记着有这个功能。等你有场景时能就会用到了。 |
50 DamonLin 2022-08-13 21:41:50 +08:00 我自己用的频率很高 |
![]() | 51 lysS 2022-08-13 22:06:02 +08:00 我一般新拉一个。话说这算 git 的缺陷把,为什么不能自动 stash? |
![]() | 52 yoa1q7y 2022-08-13 23:31:24 +08:00 还有个用法,刚写了几行,不想提交,但是又想下班,可以把改动导出成一个 patch ,拿回家继续搞 git stash show -p stash@{0} > Stash0.patch 把 Stash0.patch 这个文件放到网盘或者 U 盘 |
53 darknoll 2022-08-14 01:18:16 +08:00 via Android 经常用 |
54 securityCoding 2022-08-14 11:37:26 +08:00 一般无脑用 commit ,后面提 MR 的时候 Squash 合成一个(项目组强制) |