我感觉就像校长办公室里的一个孩子,解释说我的作业在到期前一天晚上被狗吃掉了,但我正盯着脸上的一些疯狂的数据丢失错误,我无法弄清楚它是怎么发生的。我想知道 git 怎么会吃掉我的整个存储库!我已经多次将 git 放入绞拧器中,它从不眨眼。我用它将 20 Gig Subversion 存储库拆分为 27 个 git 存储库,并将 foo 过滤分支出来以解决混乱问题,并且它从未在我身上丢失过一个字节。reflog 总是可以依靠的。这次地毯不见了!
从我的角度来看,我所做的只是运行git pull
,它破坏了我的整个本地存储库。我的意思不是说它“弄乱了签出的版本”或“我所在的分支”或类似的东西。我的意思是整件事都没有了。
这是事件发生时我的终端的屏幕截图:
让我带你了解一下。我的命令提示符包含有关当前 git 存储库的数据(使用 prezto 的 vcs_info 实现),因此您可以查看 git 存储库何时消失。第一条命令就够正常了:
» caleb » jaguar » ~/p/w/incil.info » ? ? zend ? »
??? git co master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Run Code Online (Sandbox Code Playgroud)
在那里你可以看到我在 'zend' 分支上,并检查了 master。到现在为止还挺好。您将在我的下一个命令之前的提示中看到它成功切换了分支:
» caleb » jaguar » ~/p/w/incil.info » ? ? master ? »
??? git pull
remote: Counting objects: …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个 bash 脚本,它会杀死一堆按某些标准选择的进程,然后退出。唯一的问题是这些标准适用于脚本及其父进程(bash
,sshd
)本身,因此为了避免在脚本完成工作之前杀死脚本,我首先获取与 匹配的进程ps
,然后过滤掉脚本及其父母用sed
,最后用 杀死剩余的进程kill
。
现在我想知道是否可以将其简化为单个pkill
调用,但显然,只有在保证最后pkill
杀死自身及其父进程(如果它们出现在要杀死的进程列表中)的情况下,这才有效。
是否有这样的保证落实到pkill
?