我之前想干个啥就重开分支.
才学会 stash
1
FrankAdler 2022-08-13 10:15:07 +08:00 via iPhone 1
临时切走,保留现场,或者想了一个新方案,之前的想保留下来
|
2
renmu 2022-08-13 10:15:23 +08:00 via Android 10
你原来在 dev1 分支开发,然后突然要去 dev2 改个 bug ,但是 dev1 分支没开发完不想提交,那就先 stash
|
3
xingyue 2022-08-13 10:19:30 +08:00 via Android 4
我一般选择 push 上去,后期再 rebase + push -f ,感觉这样比较保险,保证已有的修改不会掉。
|
4
DOLLOR 2022-08-13 10:20:44 +08:00 via Android 1
你正在开发 1.2.0 版本,突然汇报 1.1.0 有 bug 需要紧急修复。此时你的工作空间已经充斥 1.2.0 的杂乱状态了,如果想要保存当前状态,然后清理工作空间,可以考虑办法就是用 stash 。
|
5
izzy27 2022-08-13 10:42:21 +08:00 1
保存代码用,用 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 2
很常用。尤其是同时一个人负责多个业务模块,经常写到一半要切个分支去改个东西。
还有就是 先 stash 再 pull ,比先 commit 再 pull 可以少个 merge 记录 还有就是 尽量别用 rebase 和 push -f ,碰到这样的“打死” |
9
wudicgi 2022-08-13 11:37:34 +08:00 2
我用 TortoiseGit 时基本不用这个功能,怕出错,感觉不如建个新的本地临时分支提交一下保险
|
10
Edsie 2022-08-13 11:40:18 +08:00 1
有 Stash 需求的时候,基本都用 IDEA 的 Shelf ,感觉比 Stash 好用
|
11
340244120w 2022-08-13 11:43:42 +08:00 via iPhone 1
我主要就是本地开发的时候,配件文件里大家自己的数据库啊 工作目录啥的可能不一样,再加上不同分支配置文件结构业可能不一样。又不能把自己的提交上去。用 stash 或者 idea 的 shelve [比 stash 好用] 就可以暂存自己的配置文件。哪个分支要用就把对应的文件 unshelve 上去
|
12
Rocketer 2022-08-13 12:03:44 +08:00 via iPhone 1
从来不用,我都是直接 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 1
如果用 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 1
可以简单的理解为「 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 1
还是太麻烦啦,频繁切换分支,试试 worktree 吧
|
41
wonderfulcxm 2022-08-13 18:24:43 +08:00 via iPhone
我也没用,直接 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 合成一个(项目组强制)
|