1
hsfzxjy 2022-06-25 21:36:18 +08:00 via Android
最后一个太真实了,当年不怎么会 git 时就这样
|
2
vision1900 2022-06-25 22:01:36 +08:00
The best code is not code at all.
The best loading is no loading at all. The best VCS is? |
3
lzgshsj 2022-06-25 23:15:02 +08:00
哈哈,那个全删了然后重新 clone 的人就是当年的我了
|
4
lifanxi 2022-06-25 23:27:01 +08:00
场景还不够丰富,都是偏简单的。如果有复杂的场景,可以参考: http://sethrobertson.github.io/GitFixUm/fixup.html
|
5
ClericPy 2022-06-25 23:33:32 +08:00
几乎全是日常禁止使用的... 够骚, 不愧是站长
|
6
MichealXie 2022-06-25 23:53:25 +08:00
重新克隆的好像可以直接用 git clean -fdx?
@lzgshsj |
7
christin 2022-06-26 00:10:48 +08:00 via iPhone 1
|
8
LeeReamond 2022-06-26 01:35:41 +08:00
很多 git 使用上的问题不如说本来就是 git 设计上的缺陷吧,就像 reset hard 名字这么叫,但功能上并不是真正的 reset 。另外虽然命令行很好,但在桌面时代 GUI 支持也不佳,到现在还是那个 win2003 年画风的界面
|
9
msg7086 2022-06-26 03:31:57 +08:00
@LeeReamond 简而言之就是 git 的 cli api 设计得谢特一样,一个命令对应一堆功能,仅仅参数变化就会造成不同的行为(比如臭名昭著的 checkout )。不止一个人骂过了,但是 cli api 被依赖太多又不可能推倒重来……
|
10
LeeReamond 2022-06-26 07:31:29 +08:00
@msg7086 你一总结感觉确实是这样。印象里 git 不是 linus 为了合并代码搞出来的么,印象里这是个代码很优雅的人物,怎么搞出来个这样的设计
|
11
TravisMtg 2022-06-26 07:43:49 +08:00 via iPhone
这网站还有低情商高情商俩版本😂
|
12
leavic 2022-06-26 09:51:17 +08:00
cd ..
sudo rm -r fucking-git-repo-dir git clone https://some.github.url/fucking-git-repo-dir.git cd fucking-git-repo-dir ======================= 这不就是我现在的操作吗。。。。。 |
13
JaguarJack 2022-06-26 10:06:16 +08:00 via iPhone
@LeeReamond 也许他喜欢,而使用的并不喜欢
|
14
Buges 2022-06-26 10:16:37 +08:00
@leavic #12 没错,搞坏了还是这样最方便。还有一个对于本地库(如不小心 commit 了 sceret ),最直接的办法是 rm -rf .git && git init && git add . && git commit -m "init" 直接整个重置
|
15
Rekkles 2022-06-26 10:30:43 +08:00
🙄 我一直以为是我太菜了才会出现这些问题
|
16
vivipure 2022-06-26 12:38:34 +08:00
git commit --amend 的确好用。我之前都是 git reset --soft ,然后重新提交的
|
17
AloneHero 2022-06-26 14:31:12 +08:00 via Android
就想知道 vscode 怎么用 worktree ,每次不想提交但又需要切换分支的时候巨麻烦
|
18
realpg 2022-06-26 15:09:40 +08:00
|
19
fwindcore 2022-06-26 15:20:54 +08:00
还缺少一个提交了一大堆才意识到忘记切换账号,把公司邮箱提交到开源项目里了。
以前是用 filter-branch ,但是现在似乎推荐使用 filter-repo 了。不过都不太方便,参数太多,还不如写个 shell function 切换。 |
20
MMMMMMMMMMMMMMMM 2022-06-26 16:09:24 +08:00
遇事不决加 --force
|
22
ClericPy 2022-06-26 17:26:08 +08:00
@Binb 早些年 code review 不健全的时候, 那个 amend 还有 cherrypick 老有人乱提, 结果把正在开发的人弄蒙了, 不过现在也无所谓了, 新公司特么的连 git 都不让用, 我已经佛了
|
23
Binb 2022-06-26 17:37:54 +08:00
@ClericPy 那确实,多人开发分支不能做 ammend 、rebase 等重写 commit id 的操作,真会把人搞懵逼确实难。我都是给自己用,提 mr 前整理自己分支,方便 review ,也方便回退
|
26
wdssmq 2022-06-26 18:29:32 +08:00
水水的书签收藏
https://wdssmq.github.io/bookmarks/#/ 想把这个教程加进我的书签收藏夹里,而我的书签是用 git 管理的,然后中间就了出现了因为我自己使用姿势的坑 - - 累觉不爱。。 |
27
Rache1 2022-06-26 20:44:55 +08:00 3
温馨提示,如果你在多人协作的环境里面,在需要使用到强制推送 (--force) 时,你应该优先使用 --force-with-lease 来代替。
直接使用 --force 时,如果其他协作成员已经推送了新的提交,就会导致这段内容丢失,而使用 --force-with-lease 的时遇到这种情况,就会拒绝你的推送,避免一发自信的 --force 把别人内容搞掉了。 |
28
sickoo 2022-06-26 20:51:16 +08:00
删是肯定得删的,只是看早晚
|
30
oyp 2022-06-26 23:25:22 +08:00
我问一下,这个 Git 是工作了才会接触到吗,公司会教吗?为什么学校老师从来不说
|
31
msg7086 2022-06-27 02:10:35 +08:00 via Android
@oyp 学校一般不教具体的工具。
放在国外大学,很多课上要用到语言都不一定教。比如我们有一门课要用 Python ,老师默认你上课前自己学完。 更何况学校有教学大纲,这东西不能随便变化。软件工具技术都是在飞速发展的,学校跟不上那么快的变化速度。 |
33
msg7086 2022-06-27 02:53:29 +08:00
@LeeReamond 只花了几天时间搞出来的设计,你指望设计成啥样……
所以才有后面无穷无尽的 alias 和各式各样的 GUI 把这些奇奇怪怪的 CLI 整理成结构化的功能。 |
34
Doracis 2022-06-27 17:45:25 +08:00
有一个小白问题想问问大家, 就是我想修改已提交的信息, 在使用 git rebase -i HEAD~3 这个指令的时候, 出来的 commit 记录有 19 条, (这里就有点迷糊了) 然后 在修改的记录 前面改成 edit , 回车之后提示我当前的修改点是上一个, 总之就是不能修改 提示我用 git commoit --allow-empty 或者 git reset, 这个情况大家遇到过么
|
35
GeruzoniAnsasu 2022-07-09 02:10:06 +08:00 1
@Doracis rebase 到 3 个 commit 前出来 19 条没遇到过,但猜想是你 rebase 的目标经过了一个 merge commit ,导致历史混乱。应该先把 merge 后的 commit 暂存( cherry-pick 到临时分支或者 stash 起来),reset 掉 merge commit ,然后再重新 merge ,再 pick 回暂存的东西
提示 allow empty 常见场景是你从 A 分支分岔开发 B 的时候发现有个 A 的 bug 要修,然后你在 B 上提交了一个 a(1),并且把这个 bug 告诉了其他人,它们也在 A 上提交了一个 a(2),当你要 rebaseA 把 B 的历史接到 A 后面时 a(1) 就是个空修改,因此可以直接舍弃掉。还有一种常见是 a(1)和 a(2)发生了冲突,你解决完冲突临时 commit 的修改与 a(2)相同,临时 commit 就变成了空的,也可以跳过 |